私が達成したいこと:
ユーザーがViewControllerのボタンを押すと、コンテナービューに配置されたボタンの色が赤に変わります。
ViewControllerからコンテナビューに配置されたボタンにアクセスするにはどうすればよいですか?
ステップバイステップ:
prepareForSegue(_:sender:)
を実装します。segue.identifier
_が手順1で指定した識別子と等しいかどうかを確認します。segue.destinationViewController
_を保存します。viewDidLoad()
メソッドに保存しておく必要があります。例:
_var containerViewController: YourContainerViewControllerClass?
let containerSegueName = "testSegue"
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == containerSegueName {
containerViewController = segue.destinationViewController as? YourContainerViewControllerClass
}
}
_
segue.identifier
に依存するのではなく、destination
型を直接テストすることをお勧めします。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
super.prepare(for: segue, sender: sender)
if let vc = segue.destination as? YourViewController {
vc.someVariable = true
}
}
このようにして、つづりの間違ったセグエ名の間違いを避けることができます。
var contentViewController : UIContentViewController?
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == containerSegueName {
contentViewController = segue.destination as? UIContentViewController
}
}
MacOS用Swift 3:
// MARK: - Container View Controller
var containerViewController: ContainerViewController?
let containerSegueIdentifier = "Container Segue"
override func prepare(for segue: NSStoryboardSegue, sender: Any?) {
if segue.identifier == containerSegueIdentifier {
if let connectContainerViewController = segue.destinationController as? FormationViewController {
formationViewController = connectContainerViewController
}
}
}
識別子とコントローラクラスを確認してください。