// 代码地址: https://github.com/CoderMJLee/MJRefresh // UIScrollView+MJRefresh.m // MJRefresh // // Created by MJ Lee on 15/3/4. // Copyright (c) 2015年 小码哥. All rights reserved. // #import "UIScrollView+MJRefresh.h" #import "MJRefreshHeader.h" #import "MJRefreshFooter.h" #import "MJRefreshTrailer.h" #import @implementation UIScrollView (MJRefresh) #pragma mark - header static const char MJRefreshHeaderKey = '\0'; - (void)setMj_header:(MJRefreshHeader *)mj_header { if (mj_header != self.mj_header) { // 删除旧的,添加新的 [self.mj_header removeFromSuperview]; if (mj_header) { [self insertSubview:mj_header atIndex:0]; } // 存储新的 objc_setAssociatedObject(self, &MJRefreshHeaderKey, mj_header, OBJC_ASSOCIATION_RETAIN); } } - (MJRefreshHeader *)mj_header { return objc_getAssociatedObject(self, &MJRefreshHeaderKey); } #pragma mark - footer static const char MJRefreshFooterKey = '\0'; - (void)setMj_footer:(MJRefreshFooter *)mj_footer { if (mj_footer != self.mj_footer) { // 删除旧的,添加新的 [self.mj_footer removeFromSuperview]; if (mj_footer) { [self insertSubview:mj_footer atIndex:0]; } // 存储新的 objc_setAssociatedObject(self, &MJRefreshFooterKey, mj_footer, OBJC_ASSOCIATION_RETAIN); } } - (MJRefreshFooter *)mj_footer { return objc_getAssociatedObject(self, &MJRefreshFooterKey); } #pragma mark - footer static const char MJRefreshTrailerKey = '\0'; - (void)setMj_trailer:(MJRefreshTrailer *)mj_trailer { if (mj_trailer != self.mj_trailer) { // 删除旧的,添加新的 [self.mj_trailer removeFromSuperview]; if (mj_trailer) { [self insertSubview:mj_trailer atIndex:0]; } // 存储新的 objc_setAssociatedObject(self, &MJRefreshTrailerKey, mj_trailer, OBJC_ASSOCIATION_RETAIN); } } - (MJRefreshTrailer *)mj_trailer { return objc_getAssociatedObject(self, &MJRefreshTrailerKey); } #pragma mark - 过期 - (void)setFooter:(MJRefreshFooter *)footer { self.mj_footer = footer; } - (MJRefreshFooter *)footer { return self.mj_footer; } - (void)setHeader:(MJRefreshHeader *)header { self.mj_header = header; } - (MJRefreshHeader *)header { return self.mj_header; } #pragma mark - other - (NSInteger)mj_totalDataCount { NSInteger totalCount = 0; if ([self isKindOfClass:[UITableView class]]) { UITableView *tableView = (UITableView *)self; for (NSInteger section = 0; section < tableView.numberOfSections; section++) { totalCount += [tableView numberOfRowsInSection:section]; } } else if ([self isKindOfClass:[UICollectionView class]]) { UICollectionView *collectionView = (UICollectionView *)self; for (NSInteger section = 0; section < collectionView.numberOfSections; section++) { totalCount += [collectionView numberOfItemsInSection:section]; } } return totalCount; } @end