1
所以我有一個視圖控制器A,它以模態方式呈現視圖控制器B.當B出現時,A被設置爲B的代表。 B頂部有兩個按鈕:完成和取消。兩個呼叫iOS - 在顯示模態之後保留視圖控制器狀態
dismissViewControllerAnimated(true, completion: nil)
但也完成調用存儲在A.陣列的一些信息一切的偉大工程的委託方法,不同的是,當我回去分爲B與已經存儲在陣列從以前做了一些東西單擊「,然後單擊」取消這次「,數組將被初始化爲默認的空狀態。
如何解除B,同時保持該陣列的現有狀態?謝謝。
編輯
抱歉 - 意識到這幾乎是不可能想象我所描述的,所以這裏是代碼的要點:
class A: UIViewController, BProtocol {
var array: [User] = []
func viewDidLoad() {
...
}
func BProtocolFunction(newArray) {
array = newArray
}
func prepareForSegue() {
...
B.delegate = self
}
}
class B: UIViewController {
var delegate: BProtocol?
// Works great, copies this new array to the array in A. However,
// if you go BACK into this modal, and then click cancel, that
// array is reset
func doneButtonClicked() {
delegate.BProtocolFunction(newArray)
dismissViewControllerAnimated(...)
}
// So if the user clicks cancel, the modal is dismissed
// but the array is reset to []
func cancelButtonClicked() {
dismissViewControllerAnimated(...)
}
}
所以總結:用戶從A去到B B以模態方式呈現。當在B中時,他們做了一些事情,然後單擊完成,並調用委託方法來更改A中的數組,並且該模式被解散。之後,如果他們回到B,然後單擊取消 - 數組將重置爲[]。我希望它從第一次完成點擊保留數組。
請出示你在那裏數組初始化代碼,並在您更新。 –
已更新的問題 –