iOS更新重新加载内容计时器

时间:2014-08-06 13:35:53

标签: ios objective-c uitableview timer

在我的VC中,我有一个UITableView。每个cell都有一个UITableView作为其内容之一。 Timer设置为每10秒更新一个单元格。处理事件也会重新加载相应的单元格。

计时器调用的方法: -

-(void) updateVisitotsLists {

NSLog(@"UPDATING VISITORS LIST ***************************");

// Call API's to get lists
[api getVisitorsList];

// Init Arrays
browsingList = [MainAppDataObject sharedAppDataObject].visitors_browsingList;
secondList = [MainAppDataObject sharedAppDataObject].visitors_secondList;
thirdList = [MainAppDataObject sharedAppDataObject].visitors_thirdList;
fourthList = [MainAppDataObject sharedAppDataObject].visitors_fourthList;

// AS these are no more useful, so make it nil & save memory
[MainAppDataObject sharedAppDataObject].visitors_browsingList = nil;
[MainAppDataObject sharedAppDataObject].visitors_secondList = nil;
[MainAppDataObject sharedAppDataObject].visitors_thirdList = nil;
[MainAppDataObject sharedAppDataObject].visitors_fourthList = nil;

// Reload all lists with latest data
[self reloadBrowsingRow];
[self reloadSecondRow];
[self reloadThirdRow];
[self reloadFourthRow];
}

事件处理程序方法: -

-(void) handleNewVisitor : (NSNotification *) notification {
// UPDATE VISITOR'S LIST
Visitor *v = [notification object];

@try {
    if (v != nil) {
        // Add V to browsing list
        [browsingList addObject:v];

        // Reload browsing list
        [self reloadBrowsingRow];

    }
}@catch (NSException *e) {
    NSLog(@"EXCEP - %@", e);
}
v = nil;

return;
}

重新加载方法 -

-(void)reloadBrowsingRow {
// Browsing
VisitorsListsCell *bcell = (VisitorsListsCell*)[self.visitorlistsTv cellForRowAtIndexPath:[NSIndexPath indexPathForRow:2 inSection:0]];
[bcell.listsTableView reloadData];
[bcell updateButtonText];
[bcell setNeedsDisplay];
bcell = nil;

return;
}

问题: -

当通过计时器调用updateVisitotsLists时,更新的内容不会反映在单元格上。  当事件处理程序方法调用相同的[self reloadBrowsingRow];方法时,将更新并反映单元格的内容。  由于这一点,尽管细胞内容被更新但在细胞状态改变之前不会反映 - 扩展或折叠。  我尝试在捕获的事件上正确删除计时器和单元格更新,但是当计时器打开并且事件被捕获时,方法被调用但内容未反映在屏幕上。

我觉得这两种方法可能同时调用重载方法,因此必须发生这种情况或者是什么?如何处理以确保细胞内容在任何方面都得到更新?任何帮助都非常感谢。感谢。

1 个答案:

答案 0 :(得分:1)

在该方法上使用[tableview reloadData];。 由于Reload上的tableView会重新加载所有数据,因此会更有帮助。