当前位置:  开发笔记 > IOS > 正文

如何在ipad中隐藏UiSplitviewcontroller中的主视图

如何解决《如何在ipad中隐藏UiSplitviewcontroller中的主视图》经验,为你挑选了4个好方法。

是否有任何方法可以通过编程方式隐藏splitviewcontroller中的主视图.在我的应用程序中,第一个屏幕将是一个splitviewcontroller,我不需要任何拆分视图用于下一个屏幕.我怎么能做到这一点



1> Anton..:

在SDK 5.0中,他们为UISplitViewControllerDelegate添加了新方法,可以轻松地为您完成此操作.只需像下一个那样实现它,你就不会看到主视图:

- (BOOL)splitViewController:(UISplitViewController*)svc 
   shouldHideViewController:(UIViewController *)vc 
              inOrientation:(UIInterfaceOrientation)orientation 
{
    return YES;
}

您可以看到旋转的唯一位置 - 主视图的一部分在动画期间可见.我已经用简单的方法解决了这个问题,只是在master中加载了空视图和黑视图.

PS:不确定这是否适用于i0707.但希望这对现在有同样问题的其他人有用.


请注意,拆分视图控制器在其`delegate`属性更改时为所有方向调用此方法.如果要切换行为,可以通过将其设置为nil和back来强制重新加载.您仍然需要通过调用旋转方法来触发显示/隐藏.

2> 小智..:

与杰克的答案相同,但是一个班轮.过去 - (void)setDetailItem:(id)newDetailItem {...}以关闭主人.

[[UIApplication sharedApplication] sendAction: self.navigationItem.leftBarButtonItem.action
                                           to: self.navigationItem.leftBarButtonItem.target
                                         from: nil
                                     forEvent: nil];



3> Highrule..:

Matt Gemmell创建了一个名为"MGSplitViewController"的优秀自定义splitViewController.它非常容易实现,评论很多,并且包含许多普通splitViewController所没有的优秀功能(在横向视图中隐藏主视图,在横向视图中更改分割的位置,允许用户在运行时流畅地更改分割的大小,等等).

信息和演示:http://mattgemmell.com/2010/08/03/mgsplitviewcontroller-updated/

直接来源:https://github.com/mattgemmell/MGSplitViewController/



4> 小智..:

SplitViewController提供的BarButtonItem是以编程方式隐藏主视图控制器的关键.

这段代码很危险!但优雅:)

导入目标c消息库

#import 

接下来,获取SplitViewController提供的UIBarButtonItem的句柄

- (void)splitViewController:(UISplitViewController *)splitController willHideViewController:(UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem
           forPopoverController:(UIPopoverController *)popoverController
    {
        barButtonItem.title = @"Master";
        [self.navigationItem setLeftBarButtonItem:barButtonItem animated:YES];

        //Obtain handle to BarButtonItem
        [self setMasterButtonItem:barButtonItem];
    }

然后当事件被触发时应该触发主视图控制器的自动解除,即

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

你可以这样做

objc_msgSend(self.masterButtonItem.target, self.masterButtonItem.action);


这实际上是一个很好的解决方案,与其他一些发布的想法相比应该相对"安全".你甚至可以跳过`objc_msgSend()`并调用`[[UIApplication sharedApplication] sendAction:masterBarButtonItem.action to:masterBarButtonItem.target from:nil forEvent:nil]`.
推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有