【问题标题】:I can't access the view controllers under the tabbarcontroller我无法访问 tabbarcontroller 下的视图控制器
【发布时间】:2014-01-27 06:31:20
【问题描述】:

我有一个带有 3 个子视图的 tabbarcontroller。在 IB 中,我将 3 个导航控制器连接到 tabbarcontroller,然后连接到每个导航控制器,一个 tableviewcontroller。我有想要从根 tabviewcontroller 设置的公共属性。

我的问题是.. 1)这是设置层次结构的正确方法吗?我听说你不应该在导航控制器中嵌入 tabbarcontroller,所以我为我需要的每个 tableviewcontroller 制作了 3 个导航控制器。

2) [AITBC 描述] 为空:/

NSArray *viewControllers = [self.tabBarController viewControllers];
AllItemTableViewController *AITBC = (AllItemTableViewController *)[viewControllers[0] rootViewController]; //[viewControllers[0] should be the first navigation controller, so I want its root view controller right?
AITBC.AllGroomedItemsArray = self.allGroomedData;

【问题讨论】:

  • 当用户可以通过标签在视图之间切换时,为什么您的应用需要导航栏?还是你从另一个视图控制器进入标签栏控制器?
  • @Carpetfizz 整个应用程序只有 3 个标签。我想要导航控制器,以便在每个选项卡的顶部有一个漂亮的导航栏。而不是仅仅处于底层。在每个 tableviewcontroller 上只放置一个导航栏而不是将它们全部嵌入导航控制器是否更好/可能?
  • @Carpetfizz ^^ 以上
  • 是的。您可以添加UINavigationBar。只需为它设置一个出口,您就可以像往常一样设置它的属性。
  • @Carpetfizz 那么使用导航控制器作为后退按钮的最突出原因是什么?

标签: ios objective-c uinavigationcontroller interface-builder uitabbarcontroller


【解决方案1】:

您无法访问视图控制器的原因是因为您甚至没有将 tabBarController 链接到某种代码,以便您继续做一些时髦的事情。

要将界面构建器的 tabBarcontroller 链接到您的代码,只需创建您自己的 TabBarViewController 类,将其命名为 MyTabBarViewController 之类的名称,然后将该类链接到界面构建器文件中的 TabBarViewController。

完成后,您将能够从新类访问标签栏视图控制器。

或者您可以通过代码来实现,您可以在您的应用程序委托中添加一个 tabBarViewController 属性,然后将 windows.rootViewcontroller 链接到该属性,以便在界面构建器中访问您的 tabBarViewcontroller,而无需直接在 IB 中链接任何内容。但是您已经表现出对在您的应用程序委托中包含任何代码不感兴趣,正如对话聊天线程中所讨论的那样。

你也有[self.tabBarController viewControllers],而你可以改为self.viewControllers。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-07
    相关资源
    最近更新 更多