我有一个iOS7应用程序,它基于Xcode主 - 详细信息模板,我移植到iOS8.一个变化很大的领域是UISplitViewController.
在纵向模式下,如果用户点击详细视图控制器,则主视图控制器将被关闭:

如果用户点击一行,我还希望能够以编程方式隐藏主视图控制器.
在iOS 7中,主视图控制器显示为弹出窗口,可以隐藏如下:
[self.masterPopoverController dismissPopoverAnimated:YES];
Run Code Online (Sandbox Code Playgroud)
使用iOS 8,主服务器不再是popover,因此上述技术不起作用.
我试图解雇主视图控制器:
self.dismissViewControllerAnimated(true, completion: nil)
Run Code Online (Sandbox Code Playgroud)
或者告诉拆分视图控制器显示详细信息视图控制器:
self.splitViewController?.showDetailViewController(bookViewController!, sender: self)
Run Code Online (Sandbox Code Playgroud)
但到目前为止还没有任何工作.有任何想法吗?
我可以正确调用"toggleMasterVisible"方法作为Button动作,但我想像这样扩展方法.
(In Button action. It works)
.h
@interface DetailViewController : UIViewController <UISplitViewControllerDelegate>
@end
.m
UIBarButtonItem *listBarButtonItem = [[UIBarButtonItem alloc]
initWithImage:[UIImage imageNamed:@"list.png"]
style:UIBarButtonItemStyleBordered
target:self.splitViewController
action:@selector(toggleMasterVisible:)];
(I want to expand the method)
.m
UIBarButtonItem *listBarButtonItem = [[UIBarButtonItem alloc]
initWithImage:[UIImage imageNamed:@"list.png"]
style:UIBarButtonItemStyleBordered
target:self
action:@selector(toggleMasterVisibleIfCondtionIsOK:)];
-(void)toggleMasterVisibleIfCondtionIsOK
{
if(isConditionOK){
[self.splitViewController toggleMasterVisible];
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我收到一个错误,"UISplitViewController'声明没有可见@interface".方法在哪里定义?我在参考文献(http://developer.apple.com/library/ios/#documentation/uikit/reference/UISplitViewController_class/Reference/Reference.html)上找不到该方法,我该如何调用该方法?任何帮助将不胜感激.