- iOS
- 2017-05-24 - 更新:2019-02-13
この記事は最終更新日から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,143 views