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
上一段时间后,我使用委托方法显示了masterviewController
- (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