iOS更新重新加载内容计时器
在我的VC中,我有一个iOS更新重新加载内容计时器,ios,objective-c,uitableview,timer,Ios,Objective C,Uitableview,Timer,在我的VC中,我有一个UITableView。每个单元格都有一个UITableView作为其内容之一定时器设置为每10秒更新一次每个单元格。事件被处理,这也会重新加载相应的单元格 计时器调用的方法:- -(void) updateVisitotsLists { NSLog(@"UPDATING VISITORS LIST ***************************"); // Call API's to get lists [api getVisitorsList]; // I
UITableView
。每个单元格
都有一个UITableView
作为其内容之一<代码>定时器设置为每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]时方法,则更新并反映单元格的内容。
因此,尽管单元格内容已更新,但在单元格状态更改(展开或折叠)之前不会反映内容。
我尝试在捕获事件时正确删除计时器和单元格更新,但当计时器打开且事件被捕获时,会调用方法,但内容不会反映在屏幕上
我觉得这两个方法可能同时调用reload方法,所以这一定是在发生什么?如何确保单元格内容在任何方面都得到更新?非常感谢您的帮助。谢谢。使用[tableview重新加载数据]代码>在该方法上。
因为tableView
上的Reload
将重新加载所有数据,因此它将更有帮助。使用[tableView reloadData];在那上面method@MohitPopat,那么如何从handleNewVisitor方法成功重新加载。而重载BrowsingRow方法只重载一个单元格,那么为什么要在tableview上调用重载呢??在tableview上重新加载将重新加载所有数据。因此,这将是更多helpfull@MohitPopat,那么您的意思是,不要重新加载4个单元格,而只调用reload tableview。对,对。试试这个,告诉我它是否有效