隐藏第二个viewcontroller并导航到第三个viewcontroller

时间:2011-11-29 04:48:31

标签: iphone objective-c uiviewcontroller navigation pushviewcontroller

我在ViewControllerA,其他ViewControllerB也加载在viewcontroller的stack.viewControllerB也有相机屏幕。 从ViewControllerA我通过以下代码致电ViewControllerB

AppNameAppDelegate *appDelegate = (AppNameAppDelegate *)[[UIApplication sharedApplication] delegate];
ViewControllerB *l_ViewControllerB = [appDelegate ViewControllerB];
l_ViewControllerB.view.hidden = NO;
[self.navigationController pushViewController:l_ViewControllerB animated:YES];

现在从ViewControllerB开始,我想切换到ViewControllerC

self.view.hidden = YES;
ViewControllerC *l_ViewControllerC = [[ViewControllerC alloc] init];
[self.navigationController pushViewController:l_ViewControllerC animated:YES];
[l_ViewControllerC release];

但它导航到我不需要的ViewControllerA,所以我需要帮助,如何在不显示ViewControllerC的情况下导航到ViewControllerA

更新: ViewControllerB是在ViewControllerB.mm文件中定义的,有一些C ++编码也涉及ViewControllerB.mm文件。 这会使ViewControllerB在ViewControllerB.m或ViewControllerB.mm文件中定义有什么不同吗?

3 个答案:

答案 0 :(得分:1)

你应该删除这两行,除非有一些你没有提到的原因:

// in ViewControllerA:
l_ViewControllerB.view.hidden = NO;

// in ViewControllerB:
self.view.hidden = YES;

答案 1 :(得分:1)

也许在导航到ViewControllerB时,i_nigma sdk正在创建一个新线程。这就是为什么如果您尝试从ViewControllerB导航到任何其他无法导航的视图,除了已经可见的ViewControllerA。 您可以尝试在UI主线程上执行操作,以便任何UI更改都反映在UI应用程序中。您可以尝试performSelectorOnMainThread,如下所示。

[self performSelectorOnMainThread:@selector(operationComplete) withObject:nil waitUntilDone:false];

您可以参考thisthis1

答案 2 :(得分:0)

请尝试this可能对您有所帮助。