2015-06-02 2 views
1

Итак, у меня есть контроллер вида 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.

+0

Пожалуйста, покажите код, где вы инициализировать массив, и где вы обновите его. –

+0

обновленный вопрос –

ответ

0

В вашем коде должна быть некоторая ошибка.

Судя по вашему публикуемую кода, нет никакого способа, ваш массив будет обнулена с момента cancelButtonClicked не срабатывает любой делегат

Мои догадки:

  1. Вы неуместны цель действий из cancelButton для функции doneButtonClicked().
  2. Где-то в вашем A ViewController, вы сбрасываете массив другой, чем в BProtocolFunction
Смежные вопросы

 Смежные вопросы