我試圖從按鈕接觸發送到控制器以外的其他控制器作爲文件的所有者。我有四個不同的屏幕區域,我想用四個獨立的控制器(buttonController,toolbarController,textController和graphicController)與第五個控制器(mainController)控制其他四個控制器。 mainController也是與文件所有者關聯的人。爲了得到按下按鈕由mainController處理很簡單:如何將操作發送給文件所有者以外的目標?
MainController.h文件:
- (IBAction)buttonIsTouched:(id)sender;
MainController.m文件:
- (IBAction)buttonIsTouched:(id)sender {
..handle button touch event etc.
}
然後在界面生成器,按鈕觸地降落關聯事件與文件的所有者,並選擇buttonIsTouched
並離開你去。一切正常。 但是,當我對不是文件所有者控制器的控制器執行完全相同的操作時,應用程序會崩潰。這是我做的:
創建四個控制器作爲mainController的實例變量。 在-[MainController viewDidLoad]
中實例化它們。 提供與上述完全相同的按鈕處理方法 在Interface Builder中,將Object模板從庫(四次)拖到mainController.xib瀏覽器上。 分別將這些對象的類型設置爲ButtonController
,ToolBarController
,TextController
和GraphicsController
。 關聯與ButtonController
對象觸摸向下按鈕事件,並選擇buttonIsTouched
條目(在小彈出框) 生成並運行該應用程序 點擊按鈕 崩潰 - 對不起,我沒有記下錯誤代碼,但它類似於INVALID_ACCESS
當然,我可以將所有輸入先發送到mainController,然後委派給每個單獨的控制器,但這似乎是一個不雅的解決方案,特別是因爲我希望較低的控制器在消息傳遞上游之前做一些工作到mainController。必須經過mainController,然後返回類型,如果我不喜歡。
如果有人知道如何做到這一點,並有一些示例代碼做了類似於我想做的事情,我將不勝感激。
交流