在UITableViewController类里添加了一个tableview1,里面刷新界面数据的函数如下
-(void)refreshView:(BOOL)flag
{
if (flag == YES)
{
[self getData:nil];
[self.tableView1 reloadData];
}
}在B类中当数据改变时调用上边的函数
View1是上边类的实例
[View1 refreshView:flag];
这样reloadData 虽然执行了 但是界面数据并没有更新,- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
等函数也都没有调用
求大神帮忙解决一下
-(void)refreshView:(BOOL)flag
{
if (flag == YES)
{
[self getData:nil];
[self.tableView1 reloadData];
}
}在B类中当数据改变时调用上边的函数
View1是上边类的实例
[View1 refreshView:flag];
这样reloadData 虽然执行了 但是界面数据并没有更新,- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
等函数也都没有调用
求大神帮忙解决一下
reloadData函数都在哪些地方调用啊?
reloadData函数都在哪些地方调用啊?没有调用那些函数,就看看delegate和data设置没有reloadData函数在你需要重新刷新cell里面的内容的时候调用。
-(void)refreshView:(BOOL)flag
{
[tableview1 setDelegate:self];
[tableview1 setDatasoure:self];
...}
大概这么写的,但是也不行啊,会不会因为在B类里的实例和我要刷新的界面不是同一个造成的?
self.tableView1.datasource=self;再者检查页面有没有如下代码的设置
self.tableview1.delegate=nil;
self.tableview1.datasource=nil;这样也会让你先前的设置失效。还有你上面中有提到“在B类中当数据改变时调用上边的函数”
view1在B类中是引用的关系? 像这种当一个对象发生改变时去通知另一个对象的场景。建议你使用delegate 或notification 来处理。
将
[self.tableView1 reloadData];
改成:
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableView1 reloadData];
});
最好改成 if (flag) ...