抱歉 - 这可能是一个简单的问题,我是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的实例?我认为这已经被实例化了。谢谢。
答案 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一样。