Iphone 如何将操作发送到文件所有者以外的目标?

Iphone 如何将操作发送到文件所有者以外的目标?,iphone,file-ownership,Iphone,File Ownership,我正在尝试将操作从按钮触摸发送到控制器,而不是作为文件所有者的控制器。我有四个不同的屏幕区域,我希望由四个独立的控制器buttonController、toolbarController、textController和graphicController管理,第五个控制器mainController控制其他四个。mainController也是与文件所有者关联的控制器。要让mainController轻松处理按钮按下: MainController.h文件: - (IBAction)buttonI

我正在尝试将操作从按钮触摸发送到控制器,而不是作为文件所有者的控制器。我有四个不同的屏幕区域,我希望由四个独立的控制器buttonController、toolbarController、textController和graphicController管理,第五个控制器mainController控制其他四个。mainController也是与文件所有者关联的控制器。要让mainController轻松处理按钮按下:

MainController.h文件:

- (IBAction)buttonIsTouched:(id)sender;
MainController.m文件:

- (IBAction)buttonIsTouched:(id)sender {
    ..handle button touch event etc.
}
然后在Interface Builder中,将按钮触碰事件与文件的所有者关联,并选择ButtonTouched and away you go。一切正常。 然而,当我对不是文件所有者控制器的控制器执行完全相同的操作时,应用程序崩溃。以下是我所做的:

创建四个控制器作为mainController的实例变量。 在-[MainController viewDidLoad]中实例化它们。 提供与上述完全相同的按钮处理方法 在Interface Builder中,将对象模板从库中拖四次到mainController.xib浏览器上。 将这些对象的类型分别设置为ButtonController、ToolBarController、TextController和GraphicsController。 将触摸按钮事件与ButtonController对象关联,并在小弹出框中选择ButtonTouched条目 构建并运行应用程序 点击按钮 崩溃-抱歉,我没有写下错误代码,但它类似于无效的\u访问

当然,我可以让所有的输入先转到mainController,然后再委托给每个单独的控制器,但这似乎是一个不雅观的解决方案,特别是因为我希望较低的控制器在向mainController发送消息之前做些工作。如果让我不舒服的话,我必须先通过主控制器,然后再回来

如果有人知道如何做到这一点,并且有一些示例代码可以做一些类似于我想做的事情,我将不胜感激


ac

方法的一个问题是,为四个子控制器ButtonController、ToolBarController、TextController和GraphicsController中的每一个子控制器实例化两个对象。您正在viewDidLoad中以编程方式创建控制器,但它们已经从加载的nib中实例化

您不应该在viewDidLoad中创建控制器,而应该在MainController中使用保留IBOutlet属性将它们连接到IB中

然后控制器对象归MainController所有,在nib加载后不会删除。这也将删除您的内存错误