ios - 以编程方式在 UISplitViewController 中显示/隐藏主视图

标签 ios uisplitviewcontroller

我有一个使用 UISplitViewController 的应用程序。在横向时,我们有时希望始终显示主视图,有时希望它像纵向一样自动隐藏。目前可以在应用程序中调整此设置。

这一切都很好,除了一件事。当我更改设置时,我希望自动隐藏设置立即生效,而不仅仅是在我下次旋转设备时(即调用 - splitViewController:shouldHideViewController:inOrientation: 时)。

是否有某种方法(以编程方式)强制 UISplitViewController 弹出/隐藏主视图,以便 SVC 将再次查询 splitViewController:shouldHideViewController:inOrientation: 方法?

任何帮助将不胜感激。

最佳答案

没有直截了当的方法。

一个实用但有点 hacky 的解决方案是设置一个委托(delegate)并记录在显示/隐藏主控时传递给委托(delegate)的 barButtonItem。您可以使用它来触发按钮上的操作。但是,正如我所说,这并不是一个很好的方法(将来可能会中断):

- (void)splitViewController:(UISplitViewController *)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)pc
{
    _buttonItem = barButtonItem;
    // ...
}

- (void)splitViewController:(UISplitViewController *)svc willShowViewController:(UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)button
{
    _buttonItem = nil;
    // ...
}

- (void)toggleMasterVisible
{
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
    [_buttonItem.target performSelector:_buttonItem.action];
#pragma clang diagnostic pop
}

关于ios - 以编程方式在 UISplitViewController 中显示/隐藏主视图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15212370/

相关文章:

ios - 应用滤镜后图像无法识别为 UIImage

ios - UISplitViewController - 纵向并排或叠加

swift - UISplitViewController 显示灰色条

ios - 你如何添加股票苹果 watch 加载屏幕?

iOS:举起聆听

ios - UIActivityIndi​​cator 未在中心加载

ios - 如何在 iOS swift 中纵向显示主视图和 Root View

ios - 使用带有隐藏导航栏的 UISplitViewController 时的屏幕边缘手势

ios - UISplitViewController - 主视图在纵向模式下隐藏时的事件?

iphone - NSJSONSerialization 返回 nil