UINavigationController推送视图

时间:2008-12-12 03:57:32

标签: cocoa-touch

抱歉 - 这可能是一个简单的问题,我是iPhone开发的新手,仍然围绕着Views vs ViewControllers。

我有一个NavigationViewController,我可以在RootViewController中使用以下方法推送视图,该方法连接到一个Bar Button项目:

- (IBAction)switch:(id)sender {
        NSLog(@"Swith...");
        LibraryViewController *varLibraryViewController = [[LibraryViewController alloc] initWithNibName:@"LibraryViewController" bundle:nil];
        [[self navigationController] pushViewController:varLibraryViewController animated:YES];
    }

我想从当前加载的同一视图上的按钮调用此方法。基本上我想让顶部的Bar Button调用与视图上的按钮相同的方法。我想知道如何从ViewController加载的视图中调用ViewController中的方法。希望这是有道理的。

我是否需要创建RootViewController的实例?我认为这已经被实例化了。谢谢。

3 个答案:

答案 0 :(得分:4)

顺便说一下,你粘贴的代码泄漏了你的LibraryViewController。您需要在推送后明确释放它,或者在创建它时自动释放它。

答案 1 :(得分:1)

您需要在头文件中将方法声明为IBAction:

- (IBAction) myMethod: (id) sender;

保存标题,然后切换到Interface Builder。右键单击Bar按钮,然后从selector标记拖动到视图控制器对象(可能是文件所有者)。当您发布时,应该为您提供可用操作的弹出菜单,并且myMethod应该是可选的。

如果你没有弹出这个弹出窗口,你可能需要确保你的文件所有者类设置正确:在文件窗口中选择文件所有者,然后选择“工具”>菜单中的“Identity Inspector”。在检查器中,在类字段中键入视图控制器的类。

答案 2 :(得分:1)

您的RootViewController应该有自己的xib文件。在这个xib中,RootViewController由名为“File's Owner”的对象表示。您可以将视图上的按钮链接到文件所有者,就像您可以将内容链接到MainMenu.xib中的RootViewController一样。