2015-06-02 38 views
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,然後單擊取消 - 數組將重置爲[]。我希望它從第一次完成點擊保留數組。

+0

請出示你在那裏數組初始化代碼,並在您更新。 –

+0

已更新的問題 –

回答

0

代碼中的某處必定存在一些錯誤。

從您發佈的代碼來看,也沒有辦法,因爲你的cancelButtonClicked您的陣列將被重置爲零不火任何委託

我的猜測是:

  1. 你放錯了地方的行動目標cancelButton到doneButtonClicked()函數。
  2. 在某處,一個視圖控制器,你重置其他數組比BProtocolFunction
相關問題