Swift 2:从单独的选项卡栏控制器

时间:2016-07-11 05:27:47

标签: swift uinavigationcontroller modal-dialog tableview

我使用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)

我想要的是以下内容:

  1. 对TABLE2中的Singleton数据进行更改,以立即更新TABLE1中的数据及其所有子模态。 注意:目前这是通过函数调用更新单例类中的数据来实现的。即objectClass.changeData()

  2. 一旦数据更新,通过选择TABLE2中的特定行,我想: (a)将当前选择的选项卡更改为第一个选项卡 - 视图 - 控制器
      NAV1。注意这目前的工作原理:   tabBarController?.selectedIndex = 1 (b)更新附加到第一个选项卡(NAV1)的父导航控制器的所有表格中的显示数据。 (c)展开第一个选项卡(NAV1)的第一个tableView。

  3. 目前发生的情况是,NAV2-> TABLE2的变化更新数据并将当前选择的标签更改为NAV1留在的任何tableView,而不更改数据。

    仅通过转到所有子表的父(NAV1-> TABLE1)(即TABLE1A ... TABLE1Z,TABLE1AA等),数据被重置,然后通过选择tableView和向下钻取子表中的数据显示是否得到适当更新。

    我想放松一下'从第二个NAV2控制器内到第一个NAV1控制器的最顶层tableView,或者,如果失败,则在从NAV2-> TABLE2切换到任何当前钻取的NAV1-> TABLEX时自动更新信息。

1 个答案:

答案 0 :(得分:0)

尝试在NSNotifcationCenter的{​​{1}}中使用观察者。在viewDidLoad中添加观察者

NAV2-Table2

然后在另一个视图控制器中执行更新后使用NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(Table2ViewController.updateTable(_:)), name:"NotificationUpdateTable2", object: nil) 调用更新。这将反映table2中的变化

postNotificationName

记得将评论更容易跟踪更改,因为观察者可以在任何地方触发

相关问题