我正在尝试实现一种共享方法,该方法将允许在父视图控制器和子视图控制器之间共享数据。在Objective-C中,我可以这样:
@implementation UIViewController(MyParentViewController)
- (MyParentViewController*)containerController
{
UIViewController *parent = self;
Class parentClass = [MyParentViewController class];
while ( nil != (parent = [parent parentViewController]) && ![parent isKindOfClass:parentClass] ) {}
return (id)parent;
}
@end
这允许子视图控制器仅通过添加MyParentViewController *containerController = self.containerController;
来创建其父视图控制器的实例
所以问题是如何在Swift 4中实现类似的功能?预先感谢!
答案 0 :(得分:0)
这是您想要实现的基本实现。无论如何,这不是共享。如果存在父子包含关系,则该方法允许控制器获取特定控制器的实例。
extension UIViewController {
var containerController: MyParentViewController? {
var parentController: UIViewController? = parent
while parentController as? MyParentViewController == nil {
parentController = parentController?.parent
}
if let controller = parentController as? MyParentViewController {
return controller
}
return nil
}
}