从一个子视图或者一个View中刷新其他UITableView_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > 从一个子视图或者一个View中刷新其他UITableView

从一个子视图或者一个View中刷新其他UITableView

 2015/2/25 20:39:37  xxd  程序员俱乐部  我要评论(0)
  • 摘要:被问到了一个问题:如何从一个子视图或者一个View中刷新其他UITableView,常规的写法可能是这样的TestTVC*testTVC=[[TestTVCalloc]init];[testTVCloadData];这时你可以看看UITableView是不会被刷新的,起码cellForRowAtIndexPath是不会运行的,为什么呢?因为对TestTVC这样init实际是重新init了一个TestTVC,而loadData不会对已有的TestTVC有作用的
  • 标签:view 其他 一个

被问到了一个问题:如何从一个子视图或者一个View中刷新其他UITableView,常规的写法可能是这样的

TestTVC*testTVC =[[TestTVC alloc] init];
[testTVC loadData];

这时你可以看看UITableView是不会被刷新的,起码cellForRowAtIndexPath是不会运行的,为什么呢?因为对TestTVC这样init实际是重新init了一个TestTVC,而loadData不会对已有的TestTVC有作用的。但是loadData方法中如果有API的数据操作这个是会成功的。但是并不会重新渲染tableview。

看到网上2个最普遍的答案是:

1. `[self.tableView reloadRowsAtIndexPaths:[self.tableView indexPathsForVisibleRows] withRowAnimation:UITableViewRowAnimationNone];`这也是不行的,任何涉及刷新view的操作都是不会成功的,尽管它比self.tableView reloaddata好一些可以让 `cellForRowAtIndexPath` 有反应了,但是依然刷新不了数据。

2. ?主线程调用,`[testTVC performSelectorOnMainThread:@selector(loadData) withObject:nil waitUntilDone:NO];` 依然只会更新数据不会刷新视图

解决方案是使用通知:

[[NSNotificationCenter defaultCenter] postNotificationName:RELOAD_DATA object:self];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loadData) name:RELOAD_DATA object:nil];

—EOF—?

上一篇: Android Studio Check for Update 下一篇: 没有下一篇了!
发表评论
用户名: 匿名