我正在尝试将按钮触摸动作发送到控制器,而不是充当文件所有者的控制器。我有四个不同的屏幕区域,我希望由四个单独的控制器(buttonController、toolbarController、textController 和 graphicsController)管理,而第五个控制器(mainController)控制其他四个。mainController 也是与 File's Owner 相关联的控制器。要让 mainController 处理按钮按下很容易:
MainController.h 文件:
- (IBAction)buttonIsTouched:(id)sender;
MainController.m 文件:
- (IBAction)buttonIsTouched:(id)sender {
..handle button touch event etc.
}
然后在 Interface Builder 中,将按钮 Touch Down 事件与 File's Owner 相关联,然后选择buttonIsTouched
并离开。一切正常。但是,当我对不是文件所有者控制器的控制器执行完全相同的操作时,应用程序会崩溃。这是我所做的:
创建四个控制器作为 mainController 的实例变量。将它们实例化为-[MainController viewDidLoad]
. 提供与上述完全相同的按钮处理方法 在 Interface Builder 中,将一个 Object 模板从 Library(四次)拖到 mainController.xib 浏览器上。将这些对象的类型分别设置为ButtonController
、ToolBarController
和。将 Touch Down 按钮事件与对象关联并选择条目(在小弹出框中) 构建并运行应用程序 单击按钮 Crash - 抱歉,我没有写下错误代码,但它类似于 INVALID_ACCESSTextController
GraphicsController
ButtonController
buttonIsTouched
当然,我可以让所有输入首先传递给 mainController,然后委托给每个单独的控制器,但这似乎是一个不雅的解决方案,特别是因为我希望较低的控制器在向 mainController 传递上游消息之前做一些工作。如果惹恼了我,必须通过 mainController 然后返回。
如果有人知道如何做到这一点并且有一些示例代码可以做类似于我想做的事情,我将不胜感激。
交流