通过按详细信息视图按钮隐藏和取消隐藏masterView

时间:2014-01-09 06:44:48

标签: ios iphone ipad uisplitviewcontroller

我知道许多用户已经提出过这个问题,但我没有找到任何与我的问题相关的答案。

我正在使用UISplitViewController,我的应用程序从登录页面开始,所以我在启动时隐藏了masterView,在DetailViewController一段时间后我显示了主人viewController使用委托方法。

    - (BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation NS_AVAILABLE_IOS(5_0)
{
    return hideMaster;
}

我已将hideMaster初始化为NODetailViewController的ViewDidLoad()位于

之下
ViewDidLoad(){

[self.splitViewController.view setNeedsLayout];
    self.splitViewController.delegate =Nil;
    self.splitViewController.delegate = self;

    [self.splitViewController willRotateToInterfaceOrientation:[UIApplication    sharedApplication].statusBarOrientation duration:0];
    [super viewDidLoad];
}

它工作正常我的主人现在取消隐藏。但是在相同的detailViewController上,我有一个Back Button,我正在弹出当前的ViewController到最后一个viewController,我又想隐藏masterViewController,我的代码为后退按钮在下面。< / p>

- (IBAction)back:(id)sender {




hideMaster = NO;

self.splitViewController.delegate =Nil;
self.splitViewController.delegate = self;

[self.splitViewController willRotateToInterfaceOrientation:[UIApplication    sharedApplication].statusBarOrientation duration:0];


   [self.navigationController popViewControllerAnimated:NO];
}

它弹出CurrentViewController到最后ViewController但不隐藏masterViewController

请帮帮我。

2 个答案:

答案 0 :(得分:2)

@ JohnD,我查看了你的代码。你在弹出最后一个View控制器的同时隐藏了主视图控制器,但是你导航到的viewController仍然显示了主视图控制器。因此你的masterView仍在那里。 / p>

按照以下步骤进行操作。

1.将delegate的{​​{1}}加到最后一个单一View控制器ViewController上。

2.在最后一个ViewController(UINavigationController的委托)中实现以下委托方法。

UInavigationController

3.现在在下面给出的endViewController中实现UISplitViewController的委托方法。

  - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
[self.splitViewController.view setNeedsLayout];
    self.splitViewController.delegate =Nil;
    self.splitViewController.delegate = self;

    [self.splitViewController willRotateToInterfaceOrientation:[UIApplication    sharedApplication].statusBarOrientation duration:0];
}

4.现在改变你的 - (IBAction)回复:( id)发送方法与下一个。

    - (BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation NS_AVAILABLE_IOS(5_0)
{
    return hideMaster;<<===============I'm assuming hide master as a variable of shared object(Singleton).
}

我希望这会有效,如果你卡在某个地方请告诉我。

答案 1 :(得分:1)

你正在你的应用程序中使用UISplitViewController,因为你有很多视图但整个应用程序没有使用UISplitViewController只使用它的一个视图。

最好使用另一种方法。