UISplitViewController 如何显示主视图?
UISplitViewController how to show the master view?
我需要一个非常简单的东西 - 在我的 UISplitViewController
的详细视图之一中,我有一个按钮。单击它应该 show/open 主视图。而已。有可能吗?
P.S. 它应该适用于所有布局(iphone & ipad)和方向。即使详细视图部分是导航,我在几个页面中很深,也只想打开主视图。你可以假设 iOS8+.
编辑: 只是为了澄清我所说的 "deep inside several pages" 的意思。这是我的故事板截图:
假设我在 详细信息页面 2 中有一个按钮应该显示主页面。设置 preferredDisplayMode
仅适用于非紧凑尺寸,例如 iPad。例如,在 iPhone 6 上,设置后没有任何变化。后退按钮指向 详细信息页面 1,因此即使滑动也不会打开主页面,它会转到详细导航的上一页。我注意到在这种模式下根本没有拆分视图,它是由导航控制器模拟的。所以问题是:我需要什么是可能的,或者我试图在概念上将其视为可以在任何情况下和设备上打开的 "left drawer" 是错误的吗?
在 iOS8+ 您可以使用更改主视图的可见性
动画 属性 preferredDisplayMode
@property (nonatomic) UISplitViewControllerDisplayMode preferredDisplayMode
更改所有 iOS 版本可见性的通用方法是覆盖委托方法
- (BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation
{
return _needsHideMasterView;
}
这里 _needsHideMasterView
是 BOOL ivar,可以在您的代码中更改它以隐藏主视图。例如,
- (void)hideMasterView:(BOOL)needsHide
{
_needsHideMasterView = needsHide;
[splitViewController.view setNeedsLayout];
[splitViewController.view layoutIfNeeded];
}
尝试将 preferredDisplayMode 设置为 UISplitViewControllerDisplayModeAllVisible,例如
self.splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModeAllVisible;
我需要一个非常简单的东西 - 在我的 UISplitViewController
的详细视图之一中,我有一个按钮。单击它应该 show/open 主视图。而已。有可能吗?
P.S. 它应该适用于所有布局(iphone & ipad)和方向。即使详细视图部分是导航,我在几个页面中很深,也只想打开主视图。你可以假设 iOS8+.
编辑: 只是为了澄清我所说的 "deep inside several pages" 的意思。这是我的故事板截图:
假设我在 详细信息页面 2 中有一个按钮应该显示主页面。设置 preferredDisplayMode
仅适用于非紧凑尺寸,例如 iPad。例如,在 iPhone 6 上,设置后没有任何变化。后退按钮指向 详细信息页面 1,因此即使滑动也不会打开主页面,它会转到详细导航的上一页。我注意到在这种模式下根本没有拆分视图,它是由导航控制器模拟的。所以问题是:我需要什么是可能的,或者我试图在概念上将其视为可以在任何情况下和设备上打开的 "left drawer" 是错误的吗?
在 iOS8+ 您可以使用更改主视图的可见性
动画 属性 preferredDisplayMode
@property (nonatomic) UISplitViewControllerDisplayMode preferredDisplayMode
更改所有 iOS 版本可见性的通用方法是覆盖委托方法
- (BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation
{
return _needsHideMasterView;
}
这里 _needsHideMasterView
是 BOOL ivar,可以在您的代码中更改它以隐藏主视图。例如,
- (void)hideMasterView:(BOOL)needsHide
{
_needsHideMasterView = needsHide;
[splitViewController.view setNeedsLayout];
[splitViewController.view layoutIfNeeded];
}
尝试将 preferredDisplayMode 设置为 UISplitViewControllerDisplayModeAllVisible,例如
self.splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModeAllVisible;