MJRefresh的運用

前言app

項目中遇到的坑,大多數都是由於以前沒有使用到這部分的內容或者是對技術(第三方控件)理解還不到位所致,因爲以前的項目都只是設計上拉刷新,因此對上下拉刷新都在刷新時,刷新事件的處理認識不夠,致使了數據集出現了問題。今天下班回家特意的研究了這個方面的內容;經過isRefreshing來判斷是否要禁用後一個刷新。spa


(一)上下拉刷新設置(代碼就不寫全了,寫了大概的代碼);設計

__weak typeof(self) weakSelf = self;
    self.tblMyCenter.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
        
        if ([weakSelf.tblMyCenter.mj_footer isRefreshing]) {
            [weakSelf.tblMyCenter.mj_header performSelector:@selector(endRefreshing) withObject:nil afterDelay:0.3f];
            return;
        }
        
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0f*NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
            [self loadData:^{
                [weakSelf.tblMyCenter.mj_header endRefreshing];
            } with:@"header刷新"];
        });
    }];
    
    
    self.tblMyCenter.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{
        
        if ([weakSelf.tblMyCenter.mj_header isRefreshing]) {
            [weakSelf.tblMyCenter.mj_footer performSelector:@selector(endRefreshing) withObject:nil afterDelay:0.3f];
            return;
        }
        
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0f*NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
            [self loadData:^{
                [weakSelf.tblMyCenter.mj_footer endRefreshing];
            } with:@"footer刷新"];
        });
    }];

由上面的代碼能夠看得出來,在下拉刷新正在進行時再執行下拉刷新操做時,下拉刷新會被強制的結束(執行了endRefreshing關閉了下拉刷新);同理先上拉在下拉的道理是同樣的。code


(二)總結orm

在運用技術時,不怕遇到多少坑也不要太早的說放棄;以前遇到這個問題項目經理一直在旁邊說實在不行就只保留一個刷新,可是我平時看別人的app是能夠兩個刷新都保留且不會出現任何問題的,所以保留兩個刷新是能夠走通的;仍是那句話,當你差很少想放棄的時候或別人勸你放棄的時候,不妨自信點,也許就會有意想不到的收穫。事件

相關文章
相關標籤/搜索