我在做什么:
大家好,我正在学习iOS开发。我遇到了一个问题,我已经解决了。但是,我实际上并不知道发生了什么,它有效。 我正在从一本名为“Head first Iphone& amp; Ipad开发“(第2版)。本书是为Xcode 4和iOS4 Sdk编写的,而我则使用iOS 7编写Xcode 5。
目标:
我正在尝试创建一个新视图,我希望将其作为模态视图推送,以便用户填写新的饮料信息。
代码突破点:
@autoreleasepool
{
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
打破代码:
-(IBAction)addButtonPressed:(UIBarButtonItem *)sender
{
DummyAddDrink *someDrink = [[DummyAddDrink alloc] initWithNibName:@"DetailViewController" bundle:nil];
[self presentModalViewController:someDrink animated:YES];
}
工作代码:
-(IBAction)addButtonPressed:(UIBarButtonItem *)sender
{
DummyAddDrink *someDrink = [self.storyboard instantiateViewControllerWithIdentifier:@"DetailViewController"];[/u][/b]
[self presentModalViewController:someDrink animated:YES];
}
代码说明: addButtonPressed连接到“导航栏”中的“条形按钮项”。单击BBI时,它会调用aBP。 aBP通过从名为“DetailViewController”的现有控制器进行子类化来创建新视图。 DVC在IB中拥有自己的.h,.m,VC。
错误输出:
2013-12-18 09:57:02.735 DrinkMixer_Take_2[848:70b] NSBundle </Users/.../Library/Application Support/iPhone Simulator/7.0/Applications/408E0817-824B-40A6- B1B2-34DDC8043712/DrinkMixer_Take_2.app> (loaded)
2013-12-18 09:57:37.105 DrinkMixer_Take_2[848:70b] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </Users/.../Library/Application Support/iPhone Simulator/7.0/Applications/408E0817-824B-40A6- B1B2-34DDC8043712/DrinkMixer_Take_2.app> (loaded)' with name 'DetailViewController''
问题:
为什么我的程序会破坏:
DummyAddDrink *someDrink = [[DummyAddDrink alloc] initWithNibName:@"DetailViewController" bundle:nil];
答案 0 :(得分:2)
initWithNibName
。即使这样,除非绝对必要,否则你应该避免使用这种方法。
另一方面,instantiateViewControllerWithIdentifier
是在使用故事板时创建新viewController的首选方式,在这种情况下,以前的方法不起作用。