ale*_*omp 26 portrait ipad uisplitviewcontroller ios5 ios5.1
在iPad App中我正在使用UISplitViewController.当应用程序以纵向模式启动时,我需要强制显示主弹出窗口.
现在我正在使用此代码,它在iOS 5.0上运行良好.
if (UIInterfaceOrientationIsPortrait(self.interfaceOrientation)) {
   if ([[[AppDelegate sharedAppDelegate] splitViewController] respondsToSelector:[[[AppDelegate sharedAppDelegate] btnMenu] action]]) {
      [[[AppDelegate sharedAppDelegate] splitViewController] performSelector:[[[AppDelegate sharedAppDelegate] btnMenu] action]];
   }            
}
但是在iOS 5.1(使用新型主弹出窗口)中,行为似乎是随机的.有时弹出窗口全屏显示,有时效果很好.
5.1的一些建议?
Mar*_*tin 27
这里没有5.1的建议,但8.0的建议:
现在使用iOS8,有许多新的UISplitViewController配置方法.
在您的情况下,juste设置正确的值preferredDisplayMode,例如在masterViewController中viewDidLoad.
Objective-C的:
- (void)viewDidLoad {
    // configuring splitviewcontroller
    self.splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModeAllVisible;
    //....
}
迅速:
    override func viewDidLoad() {
        self.splitViewController?.preferredDisplayMode = UISplitViewControllerDisplayMode.AllVisible
    }
但它当然只是iOS8.
小智 13
我在这个问题上挣扎了一段时间,现在我对这个解决方案并不是百分之百满意,但考虑到目前的限制,这是我唯一能够想到的.
首先,重写以下委托方法:
- (void)splitViewController:(UISplitViewController *)splitController willHideViewController:(UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popoverController
并使用它来获取对bar按钮项的引用,并将其存储在iVar中:
barButtonForMaster = barButtonItem;
然后,当您想要显示主视图控制器时,进行如下调用:
[barButtonForMaster.target performSelector: barButtonForMaster.action withObject: barButtonForMaster];
如果您想在开始时执行此操作,请使用一些延迟以防止应用程序崩溃(感谢有用的评论):
[barButtonForMaster.target performSelector: barButtonForMaster.action withObject: barButtonForMaster afterDelay:1];
在这种情况下,您可以在拆分视图委托方法中执行选择器.
Set*_*dor 13
根据Rob的回答,这对我很有用(在viewDidLoad of detail屏幕中):
//If in portrait mode, display the master view
if (UIInterfaceOrientationIsPortrait(self.interfaceOrientation)) {
    [self.navigationItem.leftBarButtonItem.target performSelector:self.navigationItem.leftBarButtonItem.action withObject:self.navigationItem];
}
不需要使用self.navigationItem.leftBarButtonItem来获取单独的引用
对于iOS8,最简单的方法是使用以下内容:
 self.splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModePrimaryOverlay;
当我第一次启动应用程序以在masterViewController中显示登录时,我会使用此功能.在我使用的所有其他情况下
self.splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModeAutomatic
如果您在应用启动时需要它,请在详细信息视图控制器中覆盖此方法:
-(BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation
{
    return NO;
}
但是,如果你随后需要它来隐藏它看起来好像没有调用该方法,那么你必须手动隐藏它.
| 归档时间: | 
 | 
| 查看次数: | 24880 次 | 
| 最近记录: |