我使用XCode 7.3处理Swift 2.0。
我目前有2-Navigation-View-Controllers(NAV1& NAV2)。每个都有自己独立的表视图控制器(TAB1& TAB2)和相应的表(TABLE1& TABLE2)。
TABLE1具有基于数据的单独子表(TABLE1A ... TABLE1Z)。
第二个表(TABLE2)有一种方法可以通过共享的单例类更改table1及其子表(TABLE1& TABLE1A ... TABLE1Z)共享的数据。 2导航视图控制器(NAV1和NAV2)是标签条控制器(TAB_MAIN)的每个模态。 singelton类可通过任何Controller访问,是一种数据共享方式。
TAB_MAIN
-NAV1
--TABLE1 (SINGLETON)
----TABLE1A (SINGELTON)
----... [potential for multiple sub-modals/tables](SINGLETON)
----TABLE1Z (SINGLETON)
-NAV2
--TABLE2 (SINGLETON)
我想要的是以下内容:
对TABLE2中的Singleton数据进行更改,以立即更新TABLE1中的数据及其所有子模态。 注意:目前这是通过函数调用更新单例类中的数据来实现的。即objectClass.changeData()
一旦数据更新,通过选择TABLE2中的特定行,我想:
(a)将当前选择的选项卡更改为第一个选项卡 - 视图 - 控制器
NAV1。注意这目前的工作原理:
tabBarController?.selectedIndex = 1
(b)更新附加到第一个选项卡(NAV1)的父导航控制器的所有表格中的显示数据。
(c)展开第一个选项卡(NAV1)的第一个tableView。
目前发生的情况是,NAV2-> TABLE2的变化更新数据并将当前选择的标签更改为NAV1留在的任何tableView
,而不更改数据。
仅通过转到所有子表的父(NAV1-> TABLE1)(即TABLE1A ... TABLE1Z,TABLE1AA等),数据被重置,然后通过选择tableView
和向下钻取子表中的数据显示是否得到适当更新。
我想放松一下'从第二个NAV2控制器内到第一个NAV1控制器的最顶层tableView
,或者,如果失败,则在从NAV2-> TABLE2切换到任何当前钻取的NAV1-> TABLEX时自动更新信息。
答案 0 :(得分:0)
尝试在NSNotifcationCenter
的{{1}}中使用观察者。在viewDidLoad中添加观察者
NAV2-Table2
然后在另一个视图控制器中执行更新后使用NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(Table2ViewController.updateTable(_:)), name:"NotificationUpdateTable2", object: nil)
调用更新。这将反映table2中的变化
postNotificationName
记得将评论更容易跟踪更改,因为观察者可以在任何地方触发