presentViewController 没有按我的意愿工作

Posted

技术标签:

【中文标题】presentViewController 没有按我的意愿工作【英文标题】:presentViewController not working as I'd like 【发布时间】:2015-01-05 23:20:34 【问题描述】:

我的presentViewController 代码设置如下:

ProductViewController *vc = [[ProductViewController alloc] init];
[self presentViewController:vc animated:YES completion:nil];

它确实提供了vc 控制器,但我无法点击它上面的任何东西,它就像一个冻结的屏幕。是因为上面还有风景吗?或者我不应该使用alloc] init

ProductViewController 是一个现有的视图控制器(它实际上是根视图控制器),所以基本上我希望 presentViewController 回到根视图控制器。

编辑:

我有一个ShippingViewController,用户可以在其中输入姓名/运输详细信息。

然后他们点击显示PaymentViewController 的“结帐”按钮(它有一个导航栏,所有其他视图控制器都没有)。 在PaymentViewController,用户输入他们的信用卡详细信息并点击“支付”按钮。

如果支付成功,我希望提供ProductViewController(初始/根视图控制器)。目前如果我只是打电话给dismissViewController,它会显示ShippingViewController

【问题讨论】:

你有什么可以点击的...?您必须编写解除视图控制器的代码。 使用 alloc/init 将创建ProductViewController 的新实例,因此上面的代码将您带到一个新实例,而不是返回到现有实例。要返回,您应该使用dismissViewControllerAnimated:completion 而不是presentViewController:animated:completion: @pbasdf 有道理,但我不希望它回到那个视图控制器。有没有办法可以将其设置为关闭,然后转到某个视图控制器而不是前一个? 您能发布您的视图控制器层次结构的详细信息,以及您想要加载的 VC 吗? 您不妨阅读《ios 视图控制器编程指南》。 【参考方案1】:

这似乎解决了我的问题:

NSString *storyboardName = @"Main";
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle: nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"id"];
[self presentViewController:vc animated:YES completion:nil];

【讨论】:

以上是关于presentViewController 没有按我的意愿工作的主要内容,如果未能解决你的问题,请参考以下文章

当 presentViewController 没有导航视图控制器时,viewWillAppear 方向不正确

presentViewController 在 iPad 上崩溃,但在 iPhone 上不崩溃

Xcode - presentViewController NSInvalidArgumentException:无法识别的选择器发送到实例

presentViewController显示方式的窗口,没有导航栏的解决方法

PresentViewController切换界面

找不到 presentViewController