使用 UIRefreshControl 刷新 UITableView

Posted

技术标签:

【中文标题】使用 UIRefreshControl 刷新 UITableView【英文标题】:Refresh UITableView using UIRefreshControl 【发布时间】:2018-06-15 11:06:30 【问题描述】:

我在我的 tblView 中插入 UIRefreshControl,当我下拉我的表格视图时,它是调用方法 cellForRowAtIndex 但我的数组列表没有元素,那么为什么它被调用了? UIRefreshControlviewDidLoad 方法中的代码:

refreshControl = [[UIRefreshControl alloc]init];
[self.tblView addSubview:refreshControl];
[refreshControl addTarget:self action:@selector(refreshTablee) forControlEvents:UIControlEventValueChanged];

refreshTablee 的代码是:

#pragma mark:refresh table
- (void)refreshTablee 
    //TODO: refresh your data
    [refreshControl endRefreshing];
    page=1;
    slot = 10;
    HUD = [MBProgressHUD showHUDAddedTo:self.view animated:true];
    [apiObj getAskQuestion:@@"user_id":usr.usrid,@"owner_id":usr.owner_id ,@"page":[NSString stringWithFormat:@"%d",page]];
    [backupArr removeAllObjects];
    [questionList removeAllObjects];

表格方法有:

#pragma mark:table view delegate datasource
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    return questionList.count;


-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

   //code for returning cell
    return cell;



-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
    if ((int)indexPath.row == (slot-2)) 
        page = page+1;
        slot = slot+10;

        HUD = [MBProgressHUD showHUDAddedTo:self.view animated:true];

       [apiObj getAskQuestion:@@"user_id":usr.usrid,@"owner_id":usr.owner_id ,@"page":[NSString stringWithFormat:@"%d",page]];
    

【问题讨论】:

因为您忘记在 refreshTablee 方法中刷新 tableview。 收到 api 的响应后刷新表 @dreamBegin 好的,我知道了,它正在工作,我用 refresh Tablee 方法重新加载我的表。谢谢 干杯!........ 【参考方案1】:

根据@dreamBegin 的建议,我在 refreshTablee 方法中重新加载我的表及其工作。感谢回复@dreamBegin

#pragma mark:refresh table
- (void)refreshTablee 
    //TODO: refresh your data
    [refreshControl endRefreshing];
    page=1;
    slot = 10;
    HUD = [MBProgressHUD showHUDAddedTo:self.view animated:true];
   [apiObj getAskQuestion:@@"user_id":usr.usrid,@"owner_id":usr.owner_id ,@"page":[NSString stringWithFormat:@"%d",page]];
    [backupArr removeAllObjects];
    [questionList removeAllObjects];
    [self.tblView reloadData];

【讨论】:

以上是关于使用 UIRefreshControl 刷新 UITableView的主要内容,如果未能解决你的问题,请参考以下文章

使用 RxSwift 刷新后绑定到 UIRefreshControl

使用 UIRefreshControl 刷新 TableView 内容

根据当前 URL 使用 UIRefreshControl 刷新

用于“上拉”刷新的 UIRefreshControl?

UIRefreshControl 刷新后不隐藏。 iOS

在uitableview中使用UIRefreshControl