仅为某些视图隐藏主 UISplitViewController
Posted
技术标签:
【中文标题】仅为某些视图隐藏主 UISplitViewController【英文标题】:Hiding master UISplitViewController for only certain views 【发布时间】:2012-08-22 12:18:31 【问题描述】:我有一个 UISplitViewController,它在 master 中有一个 UINavigationController,在 detail 中有一个 UIViewController。当设备定向为横向模式时,我希望保留正常行为。 IE。大师以横向显示并以纵向隐藏。
但是,取决于用户在主控中单击的内容,取决于将哪个 UIViewController 加载到 UISplitViewController 的详细信息部分。我想要的是当用户单击详细 UIViewController 中的按钮时,master 以横向模式隐藏。问题是我无法让它工作。
我的委托看起来像这样(为了便于查看,删除了一些行):
public class SplitControllerDelegate : UISplitViewControllerDelegate
SplitViewController incomingController;
private bool hideMaster = false;
public override bool ShouldHideViewController (UISplitViewController svc,
UIViewController viewController,
UIInterfaceOrientation inOrientation)
return hideMaster;
public void SetHideMaster(bool value)
hideMaster = value;
然后我从详细的 UIViewController 中调用它,例如
splitControllerDelegate.SetHideMaster(value);
但是没有任何改变。我不确定如何使它执行更改?主人应该立即消失吗?是什么导致 WillHideViewController 触发?
谢谢
迈克
【问题讨论】:
【参考方案1】:您尝试做的事情不能正式完成。 ShouldHideViewController()
仅在设备旋转时调用。因此,除非您前后旋转,否则您的控制器不会消失。
您有多种选择:
不要使用UIListViewController
,而是使用其他第三方替换
使用 ios5 的 UIViewController 包含特性,实现自己的拆分视图
对UISplitViewController
应用破解
关于最后一点。如果您将Delegate
属性设置为NULL
然后分配一个新委托,您应该能够强制调用ShouldHideViewController()
。之后,使用当前方向调用拆分视图控制器的WillRotate()
方法。
我会选择第二个选项。
【讨论】:
【参考方案2】:根据设计,您无法使用标准 UISplitView 做很多事情,请尝试使用第三方控件:
https://github.com/mattgemmell/MGSplitViewController
【讨论】:
是否可以安装这些组件以与 Xamarin 一起使用?以上是关于仅为某些视图隐藏主 UISplitViewController的主要内容,如果未能解决你的问题,请参考以下文章
UISplitViewController - 隐藏主滑入视图