1
ユーザーが選択したオプションに応じて操作したい辞書があります。最初のビューコントローラでSwiftで辞書の値を更新できません
:
var filterDictionary = [String : [String]]()
が第二ビューコントローラ
func onOptionsCLosed(_ filter : String, options : [String]) {
if options.count > 0 {
print(filter)
print(options)
filterDictionary[filter] = options
print(filterDictionary)
}
}
とも私は結果
をテストするために使用しているアクションから呼び出される関数を含んでいます@IBAction func submitFilter(_ sender: UIButton) {
print(filterDictionary)
}
2番目のView Controllerには、配列内の項目をチェックするアクションがあります。正しいパラメータが最初のビューコントローラに渡された後、私はあるに実行していると私はそれらを印刷することができるよ問題
@IBAction func submitOptions(_ sender: UIButton) {
let mainVC: FilterViewController = FilterViewController()
var selectedOptions: [String]? = []
if (optionCollectionView.indexPathsForSelectedItems != nil) {
for i in optionCollectionView.indexPathsForSelectedItems! {
let pos = i[1]
selectedOptions?.append(options[pos])
}
mainVC.onOptionsCLosed(filter, options: selectedOptions!)
} else {
print("ELSE")
// no items were selected prompt
}
_ = self.navigationController?.popViewController(animated: true)
}
何かが、その後、最初のビューコントローラに必要な値を渡しますが確認してくださいボタンをクリックして辞書に含まれる値をチェックして辞書を空にするか、それとも印刷しますか?[:]
新しい 'FilterViewController'をインスタンス化しています。これはあなたが戻ってくる 'FilterViewController'ではありません。呼び出し側のviewControllerにデータを戻すために、委譲を使用する必要があります。 – vacawama
MakeAppPieの答えを参照してください:https://stackoverflow.com/q/24099230/1630618 – vacawama
リンクのためのおかげで@vacawama、それは助け! –