Расширение родительского представления - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь реализовать метод совместного использования, который позволит обмениваться данными между родительским контроллером представления и дочерним контроллером представления. В 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? Заранее спасибо!

1 Ответ

0 голосов
/ 29 августа 2018

Это элементарная реализация того, чего вы хотите достичь. Во всяком случае, это не делиться. Это способ, позволяющий контроллеру получить экземпляр определенного контроллера, если есть какая-либо связь между родительским и дочерним содержимым.

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
    }
}
...