【问题标题】:UINavigationController initiWithNibName not loading the design from the .xib fileUINavigationController initiWithNibName 未从 .xib 文件加载设计
【发布时间】:2011-11-05 18:50:35
【问题描述】:

在应用程序委托中,在 didFinishLaunchingWithOptions 函数中,我有以下代码来加载 UINavigationController 视图:

 UINavigationController *navcon=[[UINavigationController alloc] initWithNibName:@"ThirdView" bundle:[NSBundle mainBundle]];

FirstView *fv=[[FirstView alloc] init];

[navcon pushViewController:fv animated:NO];

[fv release];


[self.window addSubview:navcon.view];


[self.window makeKeyAndVisible];
return YES;

.xib“ThirdView”,即 UINavigationController 视图,在 Interface Builder 中实际上是这样的:

但是当我运行应用程序时,应用程序看起来像这样:

为什么应用程序没有像我在 Interface Builder 中设计的那样加载“ThirdView.xib”UINavigationController 的导航栏设计?

更新:这是“FirstView”在 IB 中的样子:

【问题讨论】:

    标签: objective-c ios uinavigationcontroller interface-builder


    【解决方案1】:

    我不相信您正在尝试做的事情是有效的。 UINavigationController 旨在成为其他视图的容器。您创建 UINavigationController,然后通过使用 pushViewController:animated: 将视图控制器推送到其上,将您的内容添加到其中。它是使用 .xib 文件创建的推送视图控制器。

    【讨论】:

    • 不知道为什么你被否决了,你是完全正确的。他在做什么不正确。您不能在 XIB 中拥有自定义导航控制器
    【解决方案2】:

    导航控制器中的每个 UIViewController 负责提供要在导航栏上显示的内容。

    在您的视图中,您的 FirstView 的 didLoad 方法执行以下操作

    self.navigationItem.title = @"your title";
    

    但是您能否也发布您的 FirstView 在 IB 中的外观?


    我个人从未在 IB 中设置导航栏。 在这里,您如何在代码中为导航栏设置 2 个按钮

    self.navigationItem.leftBarButtonItem = self.editButtonItem;
    
    UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(insertNewObject)];
    self.navigationItem.rightBarButtonItem = addButton;
    [addButton release];
    

    此代码来自 UITableViewController 子类。

    【讨论】:

    • 我知道如何以编程方式设置导航,我实际上想知道如何查看我在界面生成器中创建的导航。
    • 在您的 xib 中为检查器中的视图设置 xib。或者以编程方式设置视图,但不要推送视图控制器,它将控制导航栏上显示的内容。
    猜你喜欢
    • 2019-10-01
    • 2016-08-31
    • 2012-01-17
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多