无法弹出视图控制器

时间:2013-01-24 00:30:19

标签: objective-c uiviewcontroller

我有2个观看次数,TableControllerWirelessController。在TableController中我需要弹出WirelessController视图。这是我尝试过的,没有任何反应,也没有控制台输出。

WirelessController *wCon = [[WirelessController alloc] init];
[[wCon navigationController] popViewControllerAnimated:YES];

这也有同样的问题。

[self navigationController] popViewControllerAnimated:YES];

当它是基于视图的应用程序时,我是否正在使用UINavigationController?

1 个答案:

答案 0 :(得分:0)

我认为你的意思是推,而不是流行......

WirelessController *wCon = [[WirelessController alloc] init];

[[self navigationController] pushViewControllerAnimated:YES];

Push将新项添加到堆栈顶部; pop从堆栈中删除顶部项目。

更新

从您的评论中看来......

  • 您的第一个视图是WirelessController的一个实例。

  • 从那里你以模态方式呈现TableController

  • 现在你要回到无线控制器。

在这种情况下,您需要将消息发送回呈现视图控制器(wirelessController),要求它关闭它已经呈现的视图控制器(tableController)

在tableController中:

  [self presentingViewController] dismissViewControllerAnimated:YES 
                                                     completion:nil]];

无论发生什么事,你当然不想这样做:

WirelessController *wCon = [[WirelessController alloc] init];

此行将创建一个新对象。您想要返回现有对象。

推送弹出 viewControllers是一种通常与导航控制器相关联的活动,它保留了一系列托管的viewControllers。在这种情况下,您将推送将新控制器添加到堆栈顶部,然后 pop 将其从堆栈中删除。在没有导航控制器的情况下,没有这样的堆栈,所以推和弹没有意义。