Итак, у меня есть контроллер вида A, который представляет собой контроллер вида B по модулю. A задается как делегат к B, когда представлен B. B имеет две кнопки вверху: Готово и Отмена. Оба вызоваiOS - сохранить вид Состояние контроллера после представления модального над ним
dismissViewControllerAnimated(true, completion: nil)
Но Done также вызывает метод делегата, который хранит информацию в массиве из A. Все прекрасно работает, за исключением того, что, когда я вернусь в B с некоторыми вещами уже хранится в массив из предыдущего Done нажмите кнопку, а затем нажмите «Отменить это время» вместо этого, массив будет инициализирован до пустого состояния по умолчанию.
Как отклонить B, сохраняя существующее состояние этого массива? Благодарю.
EDIT
Sorry - понял, что это было почти невозможно представить себе, что я описывал, так вот суть кода:
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(...)
}
}
Итак, подведем итог: пользователь переходит от А до В .B представлен модально. Когда в B они делают что-то, затем нажмите «Готово» и вызывается метод делегата, который меняет массив в A, а модальный отклоняется. После этого, если они вернутся в B, а затем нажмите «Отмена», массив будет сброшен на []. Я хочу, чтобы он сохранил массив с первого щелчка Done.
Пожалуйста, покажите код, где вы инициализировать массив, и где вы обновите его. –
обновленный вопрос –