我有一个UISplitViewController,它在master中有一个UINavigationController,在细节中有一个UIViewController。当设备面向横向模式时,我希望保留正常行为。即大师以风景显示并隐藏在肖像中。
但是,取决于用户在主服务器中单击的内容取决于将哪个UIViewController加载到UISplitViewController的详细信息部分中。我希望当用户点击详细信息UIViewController中的按钮时,将主人隐藏在横向模式中。问题是我不能让这个工作。
我的代表看起来像这样(删除了一些行以便更简单地查看):
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触发的原因是什么?
由于
麦克
答案 0 :(得分:1)
你要做的事情不能正式完成。只有在设备轮换时才会调用ShouldHideViewController()
。因此,除非你前后旋转,否则你的控制器不会消失。
您有多种选择:
UIListViewController
,而是使用其他第三方替换UISplitViewController
关于最后一点。如果将ShouldHideViewController()
属性设置为Delegate
,然后分配新的委托,则应该能够强制调用NULL
。然后,使用当前方向调用拆分视图控制器的WillRotate()
方法。
我会选择第二个选项。
答案 1 :(得分:0)
按照设计,您无法使用标准的UISplitView,尝试第三方控件: