如何添加/连接NIB以编程方式创建UINavigationController?

时间:2013-07-11 14:28:55

标签: ios objective-c

首先,我是初学者,所以我的概念可能不对。

这是我在AppDelegate.m中的代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    UIViewController *viewController = [[UIViewController alloc] initWithNibName:@"FirstView" bundle:nil];
    self.navigationController = [[UINavigationController alloc] initWithRootViewController: viewController];

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];
    self.window.rootViewController = self.navigationController;
    [self.window makeKeyAndVisible];
    return YES;
}

我们的想法是以编程方式添加UINavigationController,然后使用.xib(“FirstView”参数)作为视图。我也没有以编程方式创建视图的问题,但对于更简单的接口,我认为使用IB也可以。

然而,当我运行代码时,我收到此错误:

2013-07-11 21:20:42.644 new-book-proto-01[64308:11303] *** Terminating app due
to uncaught exception 'NSInternalInconsistencyException', reason: 
'-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "FirstView" nib
but the view outlet was not set.' 

我该怎么办?有什么遗漏吗?

此外,iOS开发中常见的是这种情况吗?这是不好的做法吗?有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

原因如下:“原因: ' - [UIViewController _loadViewFromNibNamed:bundle:]加载了“FirstView”笔尖 但视图出口没有设置。 “

这意味着您尝试访问或获取某些视图(UI元素)的值,这些视图(UI元素)在控制器类中没有IBOutlet,或者根本没有视图

您应该为控制器中“看到”的每个视图(每个UI元素都是视图)创建IBOutlets(属性)