今天犯了一個邏輯上的錯誤,點擊一個列表控制器進入內容控制器(內容控制器是用alloc方式創建的,然後自定義了一個視圖,添加到該內容控制器上,在自定義視圖上添加了一個按鈕,點擊按鈕的處理時間是從內容控制器進入另一個控制器界面,因為按鈕是在視圖類中定義的,故需在視圖類的按鈕點擊事件的處理函數中創建內容控制器類(用alloc方式創建的),然後調用內容控制器類的方法(該方法的核心代碼為:[self.navigationControllerpushViewController:apply animated:YES]; apply為要進入的控制器對象)。但是在點擊按鈕後無法進入apply控制器對象,why????
請教同事後終於明白,這裏犯了嚴重的邏輯上的的錯誤!!首先自定義視圖已經位於內容控制器上,然後再在視圖類中的按鈕點擊事件的處理函數中創建內容控制器類對象A,則A對象跟正在顯示的內容控制器類對象並不是一個對象,則apply對象並沒有進入正在顯示的內容控制器的導航棧中,故點擊按鈕不會進入apply對象的控制器中。
解決辦法:
可為內容控制器類添加一個單例的類方法,每次在需要創建內容控制器類對象時,都調用該單例類方法,保持只有一個控制器類對象,這樣apply對象進入的就是正在顯示的內容控制器類對象的導航棧(因為只有一個內容控制器類)。
後來驗證這樣也不能解決問題,這樣在點擊列表控制器進入內容控制器時,也是調用該單例類方法,當已經創建了內容控制器再點擊列表控制器進入內容控制器時,內容控制器類不會再執行初始化方法(初始化方法執行一些內容信息的加載工作),這樣內容控制器中的信息得不到更新還是以前的信息。
後來只好將按鈕填在了內容控制器的導航條上。
如果還是用上面的方法,在點擊列表控制器進入內容控制器時,用alloc 創建內容控制器類,而在視圖類點擊按鈕的處理方法中用單例的類方法來得到內容控制器類。這樣做行不行呢???我考慮着行,但沒試驗,不知道有沒有什麼沒想到的地方??