0

我使用默认选项卡控制器项目创建了一个项目。我正在使用界面生成器来编辑 .xib 文件并添加图像和按钮。我将它们连接到界面生成器中的 FirstViewController 对象(我创建并将其类设置为与代码文件相同)。我使用IBoutletsand连接了所有东西IBActions

一切工作正常,但后来我在界面构建器中做了一些更改(添加了UILabel一个就好像它没有被执行一样。该方法(和代码运行)执行没有错误(根据调试器),但视图根本没有被添加。这发生在我通过界面生成器进行一些更改之后。

现在,如果我通过单击适当的选项卡并将 拖到 将按钮连接到“选定的第一个视图控制器” ,IBOutletUILabel该标签现在具有多个引用出口。现在,如果我对按钮执行相同的操作,方法 (the IBAction) 会执行两次,但实际上会添加并显示子视图。但是,我得到一个内存访问错误,因为我的IBAction(按钮)方法访问了一个存储一些东西的属性。我猜这与以某种方式在第一个视图控制器中创建内存但试图在选定的第一个视图控制器中访问它有关?如果那有意义的话?

我不知道为什么会发生这种情况,为什么只是按钮突然停止工作。我试图尽我所能解释这个问题,这有点令人困惑。但是,如果有人有任何提示或想法,我很想听听你们对这个问题的看法以及如何解决它。

4

2 回答 2

1

听起来 - 如果我弄错了,请随时纠正我 - 您正在将选项卡栏加载的视图中的操作附加到选项卡栏的控制器。这两个实体完全不同,您希望从视图访问的任何数据都应该从视图的控制器而不是选项卡栏的控制器(在加载和卸载其他视图控制器时应该有一个相当轻量级的工作)引用。同样,您不应该向视图控制器添加子视图,它不知道如何处理子视图 - 您应该使用视图控制器向视图添加子视图。虽然看起来是语义问题,但视图控制器与视图根本不同。前者负责管理视图的内容和行为并响应视图'

于 2008-11-08T16:28:52.770 回答
1

您确定第一个插座实际上已连接。如果您命名一个插座,使其与在 nib 加载时设置的其他一些属性冲突(通过 initWithCoder:),它可能导致事情最终无法正确连接。您可以通过 NSLog'ing 输出 awakeFromNib 中的网点值来检查这一点。

于 2008-11-08T13:15:45.017 回答