在Xcode 4中我创建了一个SplitView项目,所以我有一个DetailViewController和一个RootViewController。
在RootViewController的viewDidLoad()中,我在左侧添加了一个取消按钮
// add a cancel button on the left side
cancelButton = [[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemCancel
target:self action:@selector(cancelAction:)] autorelease];
self.navigationItem.leftBarButtonItem = cancelButton;
当显示RootViewController并单击取消按钮时,我想关闭RootViewController。在我的cancelButton处理程序中,我试过调用
#if 0
[self dismissModalViewControllerAnimated:YES];
#else
[self.navigationController popViewControllerAnimated:YES];
#endif
但他们中的任何一个都不适合我。我已经尝试谷歌搜索了几个小时,但仍然没有找到解决方案。
有人可以告诉我如何关闭RootViewController吗?
感谢您的帮助
答案 0 :(得分:0)
我假设您正试图以纵向方向关闭RootViewController的弹出窗口,因为在横向上它没有意义。
你可以这样做:
1)取消按钮处理程序:
-(void)cancelAction {
[self.detailViewController.popoverController dismissPopoverAnimated:YES];
}
2)popoverController在detailViewController中是私有的,所以你必须将它公开(或者向detailview添加方法,该方法可以访问popoverController属性并从RootViewController中的cancelAction调用此方法):
2.1)删除
@property (nonatomic, retain) UIPopoverController *popoverController;
这
@interface DetailViewController ()
...
@end
2.2)添加
@property (nonatomic, retain) UIPopoverController *popoverController;
内
@interface DetailViewController : UIViewController