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:无法识别的选择器发送到实例