カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

ContainerView 親ビューから子ビューを操作したい

この記事は最終更新日から1年以上経過しています。

iOSのアプリ開発でコンテナビュー(ContainerView)が便利なので使ってみました。
その際、子ビューから別の子ビューのメソッドを実行して操作したい、ということがありました。

やってみるとそこまで難しくなかったので、簡単にご紹介したいと思います。

パターンとして、親ビューから子ビュー、子ビューから親ビュー、子ビューから別の子ビューの3通りをご紹介します。

親ビューから子ビュー

子ビュー側

class ChildController: UIViewController {
    func test() {
        //code
    }
}

親ビュー側

let targetVC = childViewControllers[0] as! ChildController
targetVC.test()

子ビューから親ビュー

親ビュー側

class ParentController: UIViewController {
    func test() {
        //code
    }
}

子ビュー側

let parentVC = self.parent as! ParentController
parentVC.test()

子ビューから別の子ビュー

コンテナビューで2つの子ビューを配置し1つ目の子ビューから2つ目の子ビューのメソッドを実行します。

この際、子ビューのインデックスを間違わないようにしなければいけません。
インデックスは以下のコードを実行してみて確認しましょう。

self.childViewControllers.forEach { vc in
    print(vc)
}

子ビュー2側(インデックス:1)

class ChildController: UIViewController {
    func test() {
        //code
    }
}

子ビュー1側(インデックス:0)

let targetVC = self.parent?.childViewControllers[1] as! ChildController
targetVC.test()

Swift4.2で以下のように変わりました。

let targetVC = self.parent?.children[1] as! ChildController
targetVC.test()

Xcode: 8.3.2
Swift: 3.1
OS: Sierra 10.12

この記事がお役に立ちましたらシェアお願いします
11,157 views

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です