我有一个带有两个UITableViewControllers(A和B)的UINavigationController。
首先显示A,当用户在显示屏上点击一行时,A加载UITableViewController B并将其推入堆栈。
然后,用户可以更新B的UITableView中的某些数据,这可能导致A的UITableView上的轻敲行需要更新。
我正试图解决的问题是UITableViewController B让UITableViewController A知道它需要更新行的最佳方法。
我已经想到了许多不同的方法,包括:
拥有一个存储IndexPath和B的引用,以便在调用ViewWillAppear时,它可以检查B的属性,然后在IndexPath重新加载单元格。
通过通知系统监视核心数据NSMangedObjectContext。两个控制器都从核心数据中提供数据。 A仍然需要存储IndexPath。
B以某种方式(通过UINavigationController?)查找前一个控制器(A)并告诉它需要更新该行。
这些似乎都没有。
有更好的方法吗?
答案 0 :(得分:1)
为什么不使用NSNotificationCenter?
答案 1 :(得分:1)
第二个对我来说是最优雅的(你可以用KVO而不是通知来调整它)。
并且因为它没有加载B他需要更多的责任(B甚至不知道A),而第三个选项使B通知A.加上它将比第一个更独立于变化(因为你有义务在加载A之前检查一下情况,并使用ViewWillApperar:,但这种情况将来可能会发生变化)