Swift 2:从单独的标签栏控制器更新 TableView
Posted
技术标签:
【中文标题】Swift 2:从单独的标签栏控制器更新 TableView【英文标题】:Swift 2: Update TableView from Separate Tab Bar Controller 【发布时间】:2016-07-11 05:27:46 【问题描述】:我正在使用 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-Navigation-View-Controllers(NAV1 & NAV2) 是 Tab-Bar-Controller (TAB_MAIN) 的每个 Modals。 singelton 类可以通过任何 Controller 访问,并且是一种数据共享方式。
TAB_MAIN
-NAV1
--TABLE1 (SINGLETON)
----TABLE1A (SINGELTON)
----... [potential for multiple sub-modals/tables](SINGLETON)
----TABLE1Z (SINGLETON)
-NAV2
--TABLE2 (SINGLETON)
我想要的是以下内容:
对 TABLE2 中的单例数据进行了更改,以立即更新 TABLE1 中的数据及其所有子模态。 注意:目前这是通过函数调用更新单例类中的数据来工作的;即 objectClass.changeData()
更新数据后,通过选择 TABLE2 中的特定行,我想: (a) 将当前选中的选项卡更改为第一个选项卡视图控制器 资产净值1。请注意,这目前通过以下方式工作: tabBarController?.selectedIndex = 1 (b) 为第一个选项卡 (NAV1) 附加到父导航控制器的所有表格更新表格中显示的数据。 (c) 展开到第一个选项卡 (NAV1) 的第一个 tableView。
目前发生的情况是,NAV2->TABLE2 中的更改会更新数据并将当前选定的选项卡更改为 tableView
NAV1 留下的任何内容,而不更改数据。
只有转到所有子表(即 TABLE1A...TABLE1Z、TABLE1AA 等)的父表 (NAV1->TABLE1) 才能重置数据,然后选择 tableView
s 并向下钻取子表中显示的数据得到正确更新。
我想从第二个 NAV2 控制器中“放松”到第一个 NAV1 控制器的最顶部 tableView
,或者,如果失败,则在从 NAV2->TABLE2 切换到任何当前钻孔时自动更新信息-向下 NAV1->TABLEX。
【问题讨论】:
改进格式 【参考方案1】:尝试在您的NAV2-Table2
中使用NSNotifcationCenter
中的观察者。在 viewDidLoad 中添加观察者
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(Table2ViewController.updateTable(_:)), name:"NotificationUpdateTable2", object: nil)
然后在另一个视图控制器中执行更新后使用postNotificationName
调用更新。这将反映 table2 的变化
NSNotificationCenter.defaultCenter().postNotificationName("NotificationUpdateTable2", object: objectData)
记得让 cmets 更容易跟踪变化,因为观察者可以在任何地方触发
【讨论】:
它应该可以工作。你可以在这里参考详细信息andrewcbancroft.com/2014/10/08/…以上是关于Swift 2:从单独的标签栏控制器更新 TableView的主要内容,如果未能解决你的问题,请参考以下文章
从标签栏控制器打开带有后退按钮的单独 ViewController
swift xcode从导航控制器切换到标签栏控制器的正确方法