0

我在谷歌上搜索了很长时间,但没有得到解决方案,在 iOS 5.1 主视图中出现右滑动,左滑动消失。

我想在详细视图的按钮单击上加载主视图,这怎么可能?

下面的代码对我有用,主视图隐藏,但主视图的黑屏尺寸仍然代替主视图。

- (void)hideMaster:(BOOL)hide {

  AppDelegate *appDelegate=(AppDelegate *)[[UIApplication sharedApplication] delegate];
 UISplitViewController* spv = appDelegate.splitViewController;
 spv.delegate=self;
 self.hiddenMaster= hide;
 [spv willRotateToInterfaceOrientation:self.interfaceOrientation duration:0];
 [spv.view setNeedsLayout];     
 }


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

NSLog(@"Spv: I do %@show the master", (self.hiddenMaster?@"not ":@""));

return self.hiddenMaster;
}

提前致谢

4

1 回答 1

1

据我了解,执行此操作的标准方法是:

  1. 在您的应用委托文件中,您需要将初始视图控制器之一设置为 UISplitViewControllerDelegate。如果您不在这里执行此操作,如果您以纵向启动应用程序,您将不会获得第一个按钮。例如:

    UINavigationController *masterNavigationController = [self.splitViewController.viewControllers objectAtIndex:0];
    MyMasterVC *master = [self.masterNavigationController.viewControllers objectAtIndex:0];
    self.splitViewController.delegate = master;
    
  2. 在 MyMasterVC.h 中<UISplitViewControllerDelegate>通过修改接口声明自己为,如:

    @interface MyMasterVC : UIViewController <UISplitViewControllerDelegate>

  3. 在 MyMasterVC.m 中,您需要实现Apple 文档中描述的 UISplitViewControllerDelegate 的各种方法

隐藏和显示视图控制器的方法为您提供了一个 UIBarButtonItem,然后您必须将其添加到您的详细视图控制器(例如,在 UIToolBar 或 UINavigationBar 中)或从中删除。

如果您在处理这个问题时遇到问题,可以在斯坦福大学优秀的 Paul Hegarty(2010 年秋季或 2011 年秋季 - 不记得)的 iTunesU 讲座中很好地介绍它。你真的应该看看。iOS5.1 改变了 MasterVC 的呈现方式,从课程中严格的“popover”方式呈现,但我认为描述的方法仍然有效。课程还很早,可能是第 5 课、第 6 课或第 7 课之类的。我认为它被称为拆分视图或 iPad 拆分视图或类似名称。

编辑: 这是第 7 课,它被称为:“UIToolbar 和 iPad 应用程序”

于 2012-10-03T12:53:21.940 回答