Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.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
Objective c popviewcontroller不执行任何操作,不执行';行不通_Objective C_Ios5_Uipopovercontroller_Back Button_Xcode4.4 - Fatal编程技术网

Objective c popviewcontroller不执行任何操作,不执行';行不通

Objective c popviewcontroller不执行任何操作,不执行';行不通,objective-c,ios5,uipopovercontroller,back-button,xcode4.4,Objective C,Ios5,Uipopovercontroller,Back Button,Xcode4.4,我试图使用popoverviewcontroller返回到ViewController,但什么也没发生 首先,我在AppDelegate中加载第一个ViewController,代码如下: UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:self.welcomeMenu]; nav.navigationBarHidden = YES; self.window.root

我试图使用popoverviewcontroller返回到ViewController,但什么也没发生
首先,我在AppDelegate中加载第一个ViewController,代码如下:

UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:self.welcomeMenu];
nav.navigationBarHidden = YES;
self.window.rootViewController = nav;
nav = nil;
SecondViewController *secView = [[SecondViewController alloc]initWithNibName:@"SecondViewController" bundle:nil];

[UIView  beginAnimations:nil context:NULL];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:0.75];
[self.navigationController pushViewController:secView animated:NO];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:NO];
[UIView commitAnimations];
secView = nil;
[self.navigationController popViewControllerAnimated:NO];
导航栏是隐藏的,因为我需要这样的导航栏
在这个ViewController中,我将显示一个带有按钮的菜单,然后,要显示另一个ViewController,我将使用以下代码:

UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:self.welcomeMenu];
nav.navigationBarHidden = YES;
self.window.rootViewController = nav;
nav = nil;
SecondViewController *secView = [[SecondViewController alloc]initWithNibName:@"SecondViewController" bundle:nil];

[UIView  beginAnimations:nil context:NULL];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:0.75];
[self.navigationController pushViewController:secView animated:NO];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:NO];
[UIView commitAnimations];
secView = nil;
[self.navigationController popViewControllerAnimated:NO];
第二个ViewController将加载(但旋转不起作用)
My Second ViewController在代码中添加了一个SplitViewController(左边的表有一个NavigationController,右边的另一个表有另一个NavigationController)
然后,在SecondViewController中,我使用以下代码手动添加一个返回按钮:

UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:self.welcomeMenu];
nav.navigationBarHidden = YES;
self.window.rootViewController = nav;
nav = nil;
SecondViewController *secView = [[SecondViewController alloc]initWithNibName:@"SecondViewController" bundle:nil];

[UIView  beginAnimations:nil context:NULL];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:0.75];
[self.navigationController pushViewController:secView animated:NO];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:NO];
[UIView commitAnimations];
secView = nil;
[self.navigationController popViewControllerAnimated:NO];
但是什么都没发生。。。 当我打印self.navigationController时,输出是(null),所以我想这就是问题所在,但是为什么我的self.navigationController是null呢?我需要做什么才能正确弹出?

如果我没有在AppDelegate代码中隐藏navigationBar,则自动显示的backButton可以正常工作,但如果我想手动执行,则无法工作…

您从未将SecondViewController添加到导航控制器的ViewController,这就是self.navigationController日志为空的原因,因此,只需使用新控制器更新ViewController阵列

无法从第二个ViewController加载拆分视图控制器

见:

拆分视图控制器必须始终是您创建的任何接口的根 创造。换句话说,您必须始终从安装视图 UISplitViewController对象作为应用程序的 窗户。然后,拆分视图界面的窗格可能包含 导航控制器、选项卡栏控制器或任何其他类型的视图 您需要实现接口的控制器。分割视图 控制器不能以模式显示


因此,行[self.navigationController-pushViewController:secView-animated:NO];不这样做?它被添加,因为在[self.navigationController pushViewController:secView动画:否]之后,我打印[self.navigationController.viewControllers count],输出为2。尽管如此,我还是手动添加了ViewController,输出也是2。然后,当我想弹出ViewController时,输出为0,self.navigationController为(null)对不起,我正在查看popViewController消息,没有注意到您的推送行——是的,推送应该将视图控制器添加到堆栈中。所以,我不确定self.navigationController为什么记录为null。哦,好的。这个问题似乎有点罕见。。。感谢您尝试将bundle:nil更改为bundle:[NSBundle mainBundle],因此我需要删除SecondViewController,在我的MainViewController中声明并加载SplitViewController,并在一个NavigationController中添加SplitViewController?否,split view controller只能是所有其他视图控制器的根。你不能在导航控制器中使用它。哦,好的。现在我明白了。。。我想我需要改变我的思维模式。非常感谢你。。。当我从MainViewController调用SplitViewController,更改“self.window.rootViewController”时,我可以添加动画吗?@user1600801:可能可以。有一些开放源码的UISplitViewController替代品限制较少,但我没有这些方面的实际经验。非常感谢。。。现在我直接调用SplitViewController,但我需要找到谁要向过渡添加动画,谁要返回MainViewController