我是iPhone和目标c的新手。我花了数小时,数小时阅读文件,并试图理解事情的工作方式。我有RTFM或至少在这个过程中。有效地使用Interface Builder
我的主要问题是,我想了解如何指定事件传递到的位置,我能够做到的唯一方法是通过指定委托,但我确信IB中有一种更简单/更快捷的方式。
所以,一个例子。假设我有20个不同的视图和视图控制器和一个MyAppDelegate。 我希望能够在IB中构建所有这些不同的Xib文件,并添加许多按钮和文本字段,然后指定它们都会在MyAppDelegate对象中生成一些事件。为此,我在IB的列表视图中的每个视图控制器中添加了一个MyAppDelegate对象。然后,我在XCode的MyAppDelegate中创建了一个IBAction方法,并返回到IB并将所有事件链接到每个Xib文件中的MyAppDelegate对象。
但是,当我尝试运行它时,它只是崩溃与一个错误的读取异常。
我的猜测是每个Xib文件都放置了一个MyAppDelegate对象指针,它与最终MyAppDelegate地址无关,该地址实际上将在运行时创建。
所以我的问题是......我该怎么做呢?
如果我说 @属性(非原子,保留)IBOutlet中MyAppDelegateClass *的appDelegate ,然后从子类这个基地的viewController我viewcontrollers的每一个,然后添加在我的AppDelegate各种IBAction为方法本身那么肯定有某种方式来连接那些IBOutlets在Interface Builder中而不是在代码中?到目前为止,我已经通过编程将appDelegate属性设置为self,从MyAppDelegateClass中加载视图控制器,但我认为[UIApplication ...]行会更好。但在IB中没有办法? – twerdster 2010-04-26 19:42:27
应用程序委托是特定的实例。你必须指向那个特定的实例,或者你没有到达实际的委托。简单地给一个类插座不会让它的子类指向特定的实例。这些出口中的每一个都必须链接到应用程序对象用作其委托的特定应用程序委托实例。 – TechZen 2010-04-26 23:17:42
笔尖文件旨在模块化,并有一个限制范围。按照设计,它们不依赖于,也不能看到整个应用程序甚至应用程序对象。因此,只有应用程序对象本身拥有的笔尖(通常是MainWindo.nib)才能看到活动的委托。 – TechZen 2010-04-26 23:18:17