我有一個問題,以UINavigationControllers。我不知道如何表達我正在嘗試做的事情,所以我只想說一下。 :)我有一個工作的UINavigationController層次結構。它工作正常。UINavigationController「轉發」一個pushViewController
但是,我有一種情況,其中「推」ViewController類本身不顯示任何東西,而是確定哪個子ViewController「轉發」推送。
MasterVC -> DeciderVC -> forwards to fooVC
or -> forwards to barVC
我想用邏輯要麼[self.navigationController pushViewController:fooVC animated:NO]
或barVC
的,我可以硬編碼到MasterVC基本重定向[self.navigationController pushViewController:DeciderVC animated:NO]
,但問題是,我想用不同的場景重用DeciderVC,而保持MasterVC,fooVC和barVC不變。我如何最好地去做這件事?
由於
編輯: 小澄清上的工作流: MasterVC
顯示幾個可能的功能集。 如果用戶選擇功能集A,則DeciderObjectA
被調用並輪流推fooVC
,記錄數據,然後推barVC
,收集數據然後再推barVC
並收集數據。之後DeciderObjectA
處理該數據。 如果用戶選擇功能集B,則調用DeciderObjectB
,然後首先按barVC
,然後按fooVC
,然後處理數據。
DeciderObjects對@protocol
中fooVC
和barVC
中聲明的相同代表方法的響應不同。
好點,我完全同意。所以我把Decider改成了'NSObject'。我將MasterVC中的'self.navigationController'傳遞給Decider'self.parentController'(實例變量),以便我可以訪問全局導航控制器。 然後我調用'pushViewController:fooVC'就可以了。我的問題是現在我有一個在fooVC的'protocol'中定義的委託方法,並且它不會在Decider中調用,即使它已經實現。 – Joseph
更具體地說,如果我從fooVC發送消息到'[self.delegate someMethod]'我得到一個'無法識別的選擇器發送到instnance',儘管它是在Decider.m中實現的,我也在分配和初始化' fooVC' – Joseph
好的。我認爲如果你仍然將ViewController從MasterVC而不是DeciderObject上移動,它會更好。DeciderObject無論是新類還是某些內聯代碼都只是做出決定。推送一個ViewController應該在ViewController中執行。那麼你也不必重置代表等等。而self.delegate不是零? – Masa