【问题标题】:How to hide MasterViewController in UISplitViewController for iPad如何在 iPad 的 UISplitViewController 中隐藏 MasterViewController
【发布时间】:2014-08-18 07:49:21
【问题描述】:

我正在使用UISplitViewController,我需要隐藏 MasterViewController 第一个 DetailViewController。意味着,当应用程序 启动,MasterViewController 必须隐藏而不点击 任何UIButton。我尝试在里面使用UISplitViewController UIViewControllers.但是什么也没发生。之后我尝试在UISplitViewController 内开发整体应用程序。这是我试图隐藏的代码MasterViewController

masterViewController = [splitViewController.viewControllers objectAtIndex:0];
    detailVC = [splitViewController.viewControllers objectAtIndex:1];
    [master.view setFrame:CGRectMake(0, 0, 0, 0)];
    detail.view.frame = splitViewController.view.bounds; 

我已经花了 1 周的时间来做这件事,但没有任何效果。请提供 解决方案。很高兴。

更新

完成隐藏主视图控制器。但是当我将委托设置为 详细视图控制器,它隐藏所有视图的主视图控制器 控制器。这是我要添加的 appDelegate 的代码 UISplitViewController.

self.splitViewController =[[UISplitViewController alloc]init];

    MasterTableViewController *masterViewController=[[MasterTableViewController alloc]initWithNibName:@"MasterTableViewController" bundle:nil];

    UINavigationController *masterNavigate=[[UINavigationController alloc]initWithRootViewController:masterViewController];

    DetailViewController *detailVC=[[DetailViewController alloc]initWithNibName:@"DetailViewController" bundle:nil];

    UINavigationController *detailNavigate=[[UINavigationController alloc]initWithRootViewController:detailVC];

    self.splitViewController.viewControllers=[NSArray arrayWithObjects:masterNavigate,detailNavigate, nil];

    self.splitViewController.delegate=detailVC;

    self.window.rootViewController=self.splitViewController;

在这里,我将 splitViewController 的委托设置为 detailVC.In 带有 Nex Mishra 代码的 detailViewController 我正在隐藏主视图 控制器,当我从 detailVC 导航到其他视图时,它会隐藏 主视图控制器。我知道这会很烦人,但它会 乐于助人。

【问题讨论】:

  • @BogdanSomlea for ipad。

标签: ios objective-c ipad uisplitviewcontroller ios7.1


【解决方案1】:

您可以使用此委托方法来隐藏主 VC。

- (BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation
{
    //Add your own logic to when you want the master VC hidden. 
    return YES;
}

【讨论】:

  • 确保将 SplitViewController 委托设置为放置此代码的控制器,否则将不会调用此委托方法。
  • 感谢 Ste Prescott。它仅适用于 AppDelegate。如何以及在 ViewController 中实现它的位置。你能举个例子吗?
  • 您可以在任何引用了拆分视图控制器的控制器中执行此操作。
  • 就像@Nex Mishra 说的,不要把它放在你的 App Delegate 中。
【解决方案2】:
- (BOOL)splitViewController:(UISplitViewController*)svc
   shouldHideViewController:(UIViewController *)vc
          inOrientation:(UIInterfaceOrientation)orientation
{

// this commant is used for showing or hiding the split view controller

svc.presentsWithGesture = TRUE; 

return YES;
}

// dont forget to assign the delegate like this in viewWillAppear


(self.splitViewController.delegate = self;)

【讨论】:

  • 在 appDelegate.h 中添加时有效。它隐藏了整个应用程序的 MasterViewController。但是,当我们只想隐藏特定视图控制器时该怎么办。
  • 你不必在应用程序委托中声明它你只需要在你想要隐藏主视图的视图控制器中添加这些行
  • 隐藏你只需要去视图就会出现并执行 svc.presentsWithGesture = NO;
  • 非常感谢@nex Mishra。
  • 嘿,它仍然为所有人隐藏主视图控制器。如果我在应用程序委托中将委托设置为详细视图控制器,它会隐藏所有视图控制器的主视图控制器。我正在更新我的问题。请看一下。
猜你喜欢
  • 1970-01-01
  • 2011-02-11
  • 1970-01-01
  • 1970-01-01
  • 2015-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多