【问题标题】:navigation controller get me to tabbar controller in IOS导航控制器让我进入 IOS 中的标签栏控制器
【发布时间】:2012-09-06 13:43:43
【问题描述】:

嗯,我已经阅读了这些帖子和教程,但它们让我更加困惑:

url 1 quest 1 quest 2

我想要的是这样做:

在我的应用程序开始时,有一个表格视图。当我按下一行时,它应该带我到另一个有标签的视图。

到目前为止,我所做的是这些:

1) 创建了一个导航控制器,还有我的tableview。当我按下一行时,会打开一个视图。在那个视图中(带有自己的 .xib 文件)我添加了标签栏项目。

您可以在这里查看图片:

但是现在,我不知道如何在按下标签栏项目时打开一个新视图。我正在尝试将我的视图嵌入到控制器中,但我不能。

2)然后我尝试了这个: 像以前一样拥有我的导航控制器,我在情节提要中添加了一个标签栏控制器,就像那张图片一样:

但我无法连接它们。我的第一个视图是“SkiCenter”类,我使用的代码是:

SkiCenter *myDetViewCont = [[SkiCenter alloc] initWithNibName:@"SkiCenter" bundle:[NSBundle mainBundle]];
    myDetViewCont.ski_center=[centers objectAtIndex:indexPath.row];
    [self.navigationController pushViewController:myDetViewCont animated:YES]; // "Pushing the controller on the screen"
    [myDetViewCont release]; // releasing controller from the memory
    myDetViewCont = nil;

我收到 SIGBRT,其中说明了“SkiCenter”的 .nib 文件。

您能否建议 1 或 2 中的解决方案?

只是为了更清楚: 解决方案1: 按行让我进入一个名为skicentermain 的uiview。我添加了几个 tabbaritems,但我不知道如何让它们打开新视图。

解决方案 2: 插入了一个标签栏控制器。它的第一个选项卡是 SkiCenter。但是当按下该行时,我得到一个 sigbart 错误。它说明了 SkiCenter 的 nib 文件。

【问题讨论】:

    标签: ios uinavigationcontroller uitabbarcontroller


    【解决方案1】:

    如果您决定使用故事板,您可以简单地将标识符从attributes inspector 放入任何视图控制器,然后使用其 id 实例化它。

    UIStoryboard * storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    
    [[self navigationController] pushViewController:[storyBoard instantiateViewControllerWithIdentifier:@"ViewControllerID"] animated:YES];
    

    【讨论】:

    • 我收到此错误:由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“Storyboard () 不包含标识符为“SkiCentersIds”的视图控制器”我的 TabBar 控制器名称为 SkiCenterIds 或在 mu UIViewController(选项卡 1)中该名称但均未使用。
    • UITabBarController 的 id 应该是 SkiCentersIds。
    【解决方案2】:

    您似乎错误地声明了您的*myDetViewCont。您调用了您的笔尖 SkiCenterMain,而不是 SkiCenter。另外,SkiCenterMain 到底是什么?那是 UITabBarController 吗?

    //SkiCenter *myDetViewCont = [[SkiCenter alloc] initWithNibName:@"SkiCenter" bundle:[NSBundle mainBundle]];
    SkiCenter *myDetViewCont = [[SkiCenter alloc] initWithNibName:@"SkiCenterMain" bundle:[NSBundle mainBundle]];
    

    【讨论】:

    • 不,它叫滑雪中心。滑雪中心是解决方案2中UIView(标签1)的名称。但是导航栏控制器和标签栏控制器之间没有连接(再次解决方案2)
    • 方案一中,文件名不是SkiCenterMain.xib吗?您需要在那里创建一个 tabBarController,而不仅仅是一个 UIView。然后将 tabBarController 的类更改为 SkiCenter。
    • 是的,但我无法将我的视图嵌入 TabBarController。无法按下此选项。视图正常打开,因此 .xib 是正确的,但它只是一个视图。
    • 是的,您不应该在 UITabBarController 中嵌入视图。相反,将您的视图设置为 UIViewController 的视图属性。然后将 UIViewController 嵌入为 UITabBarController 的选项卡之一。
    • 我做了第一个,但是再次的 UIViewController 无法嵌入到 UTabBar 控制器中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-08
    • 1970-01-01
    • 2011-09-18
    相关资源
    最近更新 更多