メインviewController
に1つのボタンがあり、デフォルト値はnil
で、これはdropDownポッドに関連付けられています。 同じviewController
にはコンテナビューもあります。異なる値のコンテナビューに同じ変数を渡す
最初に読み込むときに、共有環境設定から変数のデフォルト値を取得し、その値をコンテナビューにperformSegue
で渡します。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if(segue.identifier == "dataToContainerView"){
DispatchQueue.main.async {
var secondVC = segue.destination as! secondViewController //container viewController
secondVC.variable = self.variable
}
}
}
今、私は、ユーザーによってdropdown
ボタンから選択することで、再び同じ変数の値を渡す必要があります。
dropDown.selectionAction = { [unowned self] (index, item) in
self.button.setTitle(item, for: UIControlState())
self.variable = item
print(item)
self.performSegue(withIdentifier: "dataToContainerView", sender: nil)
//performing segue to resend the new value of the variable.
}
上記のコードは、print(item)
まで正しく実行されます。 しかしperformSegueで次のエラーが発生しています。
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'There are unexpected subviews in the container view. Perhaps the embed segue has already fired once or a subview was added programmatically?
にはどうすればdropDown
ポッドの助けを借りて最初の値を上書きコンテナビュー二度目に値を渡す必要がありますか?
update: - 変数viewControllerのjsonパーサに渡すことができるように変数値が必要です。また、コンテナviewControllerのコードが再実行されます。
あなたが代表者を通してそれを渡すことができます。 –
エラーが示すように、あなたはそれを行うことはできません。解決方法は、カスタムクロージャを設定するか、デリゲートを使用することです。 – Larme
@DharmeshKheni解決策を理解するためのコードを教えてください。 – Error