以嵌套导航控制器以编程方式导航选项卡视图控制器

时间:2016-01-23 03:05:22

标签: ios objective-c iphone

我的iOS应用中有一个带有4个标签的TabViewController设置。一些选项卡转到静态ViewControllers,而一些转到导航控制器,然后用户可以深入了解。

我的问题是,在app委托中,我实现了" didReceiveRemoteNotification"方法,当我收到远程通知时,我会使用类似于此https://github.com/terryworona/TWMessageBarManager

的库显示下拉通知

我希望以最简单,最干净的方式将回调添加到其中一个下拉消息中,这样当点击时我会在选项卡视图中显示特定索引,无论我在应用程序中的哪个位置。

我想过可能让app委托广播当前显示的视图控制器也会收听的通知,然后让当前显示的视图控制器展开,如果它嵌套在导航控制器中到顶层,即将显示TabViewController,然后更改选项卡视图控制器的索引。或者,如果当前显示TabViewController,它将捕获通知并简单地更改索引。但这似乎在概念上是侵入性的,因为现在我的ViewControllers本身必须知道它们在UI层次结构中的位置,并且所有ViewControllers(有许多)必须实现处理通知的功能,以便他们可以决定展开+设置选项卡索引OR只需设置标签索引。

1 个答案:

答案 0 :(得分:1)

我会将TabBarController子类化,你可以添加一个方法,如 - (void)receiveMessageBarNotification:(NSNotification *)通知。 TabBarController已经有了对视图控制器的引用,因此可以处理“导航控制器堆栈与静态VC”的所有逻辑。然后它会在视图控制器上调用unwind segue(如果需要)并更改自己的索引。

通知注册都可以由AppDelegate处理。