2013-07-11 77 views
0

首先,我是一个初学者,所以我可能会让我的概念错误。如何添加/连接NIB以编程方式创建的UINavigationController?

这是我的代码在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” paremeter)的意见。我没有以编程方式创建视图的问题,但对于更简单的接口,我假定使用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开发中常见的东西?这是不好的做法吗?有一个更好的方法吗?

+3

在FirstView.xib文件中,检查view outlet是否被设置为FileOwner的view属性? – Mrunal

+0

@Mrunal是对的,这听起来像是这里的问题。其他一切看起来都正确 –

+0

@Mrunal我该怎么做?我还不太熟悉XCode的用户界面。 – hfz

回答

2

这就是告诉的原因:“原因: ” - [UIViewController _loadViewFromNibNamed:bundle:]加载了“FirstView”笔尖 ,但未设置视图插口。 “

这意味着您尝试访问或对某些观点得到价值(UI元素),有没有IBOutlet中在你的控制器类或你必须在所有

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

+0

嗨,谢谢你的回答。所以问题出在UI元素,而不是他们的父视图?另外,我是否通过编程或通过Xcode的UI创建IBOOutlets? – hfz

相关问题