【发布时间】:2018-07-19 07:28:37
【问题描述】:
我有一个带有分段控制的视图控制器 A,并且我在控制器 A 中添加了两个视图控制器的(B 和 C)视图,用于不同的段选择。我在控制器 B 和控制器 C 上各有一个按钮。点击每个控制器 B 和控制器 C 的按钮,我要去controllerD。
我如何知道我来自哪个控制器?
我尝试了下面的代码,但我认为由于控制器 (B & C) 添加到控制器 A 的视图,它给了我零。
guard let parent = self.parent else {return}
在这种情况下如何获得父母?
【问题讨论】:
-
你试过 self.presentingViewController 了吗?
-
如果您以模态方式呈现 D,那么您可以说
self.presentingViewController以获取对父级的引用,或者如果它被推送,您可以在 D 中说self.parent以获取父级视图控制器 -
稍微不同的是,您始终可以在 ViewController D 中声明一个名为 parent 的弱引用声明一个协议并让您的 ViewController B 和 C 确认它并将您的 ViewController B 或 C 的实例传递给 D在展示或推动时。使用协议方法触发B和C中的方法
-
实际上,如果您将
viewController添加为孩子,那么您将能够获得您尝试过的方式。否则,在不知道您导航的方式的情况下很难分辨。您可能需要分享更多关于如何添加/呈现B、C和DViewControllers的代码 -
self.presentingViewController 也给我 nil。
标签: ios swift uiviewcontroller parentviewcontroller