0

我通过以下方式推动控制器:

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController"     bundle:nil];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];

到了那里,我不能再回去了

[self dismissViewControllerAnimated:YES completion:nil];

或者

[self.navigationController popViewControllerAnimated:YES];

我应该用什么来关闭最后一个视图?

4

3 回答 3

1

到你想解雇并去的地方?

这是根视图控制器吧?它不能被“解雇”。如果您有另一个视图控制器并且此 VC 是从第二个 VC 推送或模态呈现的,则可以将其关闭

窗口是基础画布,VC 被添加到它上面并显示出来。

好的,根据您的说明,您有一个带有联系人的初始 VC,并且您正尝试从该contactVC 转到下一页(DetailsVC),然后从那里解散。

您当前正在做的是获取窗口并将您的 detailVC 作为根 VC。这样您就不能关闭联系人 VC。detail VCdidselectRowAtIndexpath方法中创建一个实例contactsVC并使用导航控制器推送它。

然后你可以使用方法弹出popViewControllerAnimated:

这是一个很好的教程让你开始

于 2013-02-07T12:13:51.557 回答
0

您的代码不是“推动控制器”。该代码本质上是您可以在应用程序委托中找到的用于设置一个初始窗口和视图的代码。

只有在您使用 pushViewController 将控制器推送到同一个导航控制器之后,调用 popViewController 才有效,但您还没有这样做。

调用dismissViewController 仅在您使用presentViewController 呈现视图控制器后才有效,而您还没有这样做。

于 2013-02-07T12:16:12.790 回答
0

我终于放弃了上面的技术,转而使用传统的:

ViewController *detailViewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
[self.navigationController pushViewController:detailViewController animated:YES];
于 2013-02-09T20:28:02.783 回答