Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 按detailView的按钮隐藏和取消隐藏主视图_Ios_Iphone_Ipad_Uisplitviewcontroller - Fatal编程技术网

Ios 按detailView的按钮隐藏和取消隐藏主视图

Ios 按detailView的按钮隐藏和取消隐藏主视图,ios,iphone,ipad,uisplitviewcontroller,Ios,Iphone,Ipad,Uisplitviewcontroller,我知道很多用户都问过这个问题,但我没有找到任何与我的问题相关的答案 我正在使用UISplitViewController,我的应用程序从登录页面开始,因此我在开始时隐藏了masterView,在DetailViewController上一段时间后,我使用委托方法显示了masterviewController - (BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewCo

我知道很多用户都问过这个问题,但我没有找到任何与我的问题相关的答案

我正在使用
UISplitViewController
,我的应用程序从登录页面开始,因此我在开始时隐藏了
masterView
,在
DetailViewController
上一段时间后,我使用委托方法显示了master
viewController

    - (BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation NS_AVAILABLE_IOS(5_0)
{
    return hideMaster;
}
  - (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];
}
我已将
hideMaster
初始化为
NO
,下面是
DetailViewController
的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上,我有一个后退按钮,在该按钮上,我将当前的ViewController弹出到最后一个ViewController,我想再次隐藏主控ViewController我的后退按钮代码如下

- (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];
}
当前视图控制器
弹出到最后一个
视图控制器
,但不隐藏
主视图控制器


请帮帮我。

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

按照下面给出的步骤操作

    - (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.将
UInavigationController
委托给您最后一个单视图控制器ViewController

2.在最后一个单视图控制器(UINavigationController的委托)中,实现以下委托方法

    - (BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation NS_AVAILABLE_IOS(5_0)
{
    return hideMaster;
}
  - (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];
}
3.现在在side lastViewController中实现UISplitViewController的委托方法,如下所示

    - (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).
}

我希望这能起作用,如果你在某些地方卡住了,请让我知道。

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


最好使用另一种方法。

wali,你所说的最后一个单一ViewController和“我假设隐藏主控对象是共享对象(单例)的变量”是什么意思?LastSingleViewController是一个ViewController,之后你将在应用程序中显示masterViewController,我假设您正在使用hidMaster变量作为共享对象的成员变量,这意味着一个单例对象,因为如果在弹出viewController时将hideMaster的值更改为NO,它应该会反映在以前的viewController上much@wali