我在主视图中添加了一个子tableView,并且subView每2秒重新刷新一次数据,但子视图控制器中的cellForRowAtIndexPath函数不会自动调用。只有在我手动移动主UI中的表视图时才会调用它。有什么想法吗?
子表视图创建为以下代码。
_tableView = [[UITableView alloc]init];
_mvc = [[meterViewController alloc]initWithMeter:ipAddr protocol:protocol id: meterId];
_tableView.dataSource = _mvc.self;
_tableView.frame = self.view.bounds;
[self.view addSubview:_tableView];
PS:subtableview控制器中的numberOfSectionsInTableView每2秒调用一次,但是cellForRowAtIndexPath仅在启动时调用,或者我在主屏幕上拖动tableview使其重绘。
答案 0 :(得分:0)
以下提示可能有助于重新加载subTableView:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
if(tableView == superTableView){
[subTableView performSelector:@selector(reloadData) withObject:nil afterDelay:0.1];
return //superTableView.sectonCount
}
else if(tableView == subTableView){
return //subTableView sectionCount
}
return //default Count, you can set 1.
}
答案 1 :(得分:0)
听起来代理人设置不正确。确保你做self.tableView.delegate = self;
。自我将是您的视图控制器而不是您的子视图。
您可以使用子视图,但是您必须在子视图自定义类中实现UITableViewDelegate和UITableViewDataSource协议。将tableview的委托和数据源分配给子视图。
答案 2 :(得分:0)
很奇怪但是reloadSection可以用来调用cellForRowAtIndexPath。
NSIndexSet * sections = [NSIndexSet indexSetWithIndex:i];
[self.tableView reloadSections:sections withRowAnimation:UITableViewRowAnimationNone];