坚持使用initWithNibName

时间:2012-07-13 22:39:55

标签: iphone ios5 interface-builder xcode4.3

我使用故事板创建了一个应用程序。有两个视图控制器第一个视图或初始视图是UnifeyeMobileViewController,第二个视图控制器被称为SecondViewController。两者都通过导航视图控制器内的segue连接。 SecondViewController有两个按钮。在第二个ViewController内的第一个按钮的IBAction上,我试图运行下面的代码。

我正在尝试使用以前版本的xcode中现有应用程序中的以下代码,我们使用XIB而不是故事板,但下面的代码不适用于storyboard,它会在presentModelViewController语句中生成错误消息。 / p>

UnifeyeMobileHelloWorld* unifeyeMobileViewController = [[UnifeyeMobileHelloWorld alloc] initWithNibName:@"UnifeyeMobileViewController" bundle:nil];
unifeyeMobileViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[viewController presentModalViewController:unifeyeMobileViewController animated:YES];
[unifeyeMobileViewController release];

UnifeyeMobileHelloWorld是我在这里以编程方式生成的viewcontroller。从file-> new-> file-> UIViewController的目标C类子类导入的UIController类。将此文件命名为UnifeyeMobileHelloWorld.And在实现文件中添加了该功能。

2 个答案:

答案 0 :(得分:0)

所以你试图从第二个视图控制器创建一个模态segue到第一个视图控制器?从第一个(UnifeyeMobileHelloWorld)到第二个有一个segue,一个模态,更有意义。然后当有人点击你要发回的按钮时,你可以打电话

[self dismissModalViewControllerAnimated:YES]; //如果您愿意,可以选择

不确定这是否适合您的应用程序的其余设计,如果您在第二个之后有更多视图,请将其从UnifeyeMobileHelloWorld推送到第二个,并且顶部的导航栏将具有自动返回按钮。

答案 1 :(得分:0)

编辑:无操作方法:

您在上述评论中粘贴的错误表明问题实际上是在其他地方。您按下的按钮配置为使用选择器btnHelloWorld:向SecondViewController发送消息,而SecondViewController 没有该选择器的方法。如果重命名方法并且不将故事板中的按钮重新连接到新方法,则会发生这种情况。因此打开故事板,然后从按钮重新按住Ctrl键拖动到SecondViewController中的相应操作方法。

原始答案:

(通过上面的对话),您需要复制XIB文件,或者将XIB的内容移动到故事板并使用更现代的过渡技术(即拖放segue过渡)。

要使用您正在尝试的方式使用视图控制器,它需要3个文件:

  1. .h
  2. .m
  3. .xib(或.nib)
  4. 在您的情况下,似乎缺少#3。需要布局ViewController的子视图并初始化它们的连接,至少需要它,因为你调用'initWithNibName:`,需要* ib文件