【问题标题】:Refresh UITableView not working刷新 UITableView 不起作用
【发布时间】:2026-01-02 06:45:02
【问题描述】:

在视图控制器中有一个 UITableView,在最后一节的最后一行,有一个 Facebook 登录和注销按钮作为切换。如果用户登录它会自动退出,反之亦然。问题是当登录控制在 safari 中退出应用程序然后返回并自动刷新视图时,但在退出时 UITableView 不会重新加载。下面是我正在使用的代码。

NSHTTPCookie *cookie;
        NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
        for (cookie in [storage cookies])
        {
            NSString* domainName = [cookie domain];
            NSRange domainRange = [domainName rangeOfString:@"facebook"];
            if(domainRange.length > 0)
            {
                [storage deleteCookie:cookie];
                isFb = 0;
                [tableView_detailsEdit reloadData];
                [[FBSession activeSession] closeAndClearTokenInformation];
            }
        }
        isFb = 0;

        [[FBSession activeSession] closeAndClearTokenInformation];

        [tableView_detailsEdit reloadData];

问题是 UITableView 委托方法没有被调用。因此,表格视图中单元格上的文本在退出登录后不会更改。 以上请指导。

【问题讨论】:

  • 您是否将自己(视图控制器)或任何实现委托方法的对象设置为表视图的委托?
  • @HAS 是的,代表已设置,这就是 tableview 工作的原因,如果我滚动 uitableview 然后值更改但不会通过调用 reloadData 自动更改。

标签: iphone uitableview ios7


【解决方案1】:

使用以下

[[NSOperationQueue mainQueue] addOperationWithBlock:^ {

     [tableView_detailsEdit reloadData];

}];

或者

double delayInSeconds = 2.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds *  NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
     [tableView_detailsEdit reloadData];
});

【讨论】: