我遇到这个问题,因为我最初是在主笔尖中制作的所有东西,但是在阅读后,我了解到使用子视图最好。

我在AppDelegate中有iBactions,并且已经成功地连接并加载了我的子视图。但是,当我尝试将子视图中的按钮连接到AppDelegate中的Ibactions时,iBactions出现在“第一响应者”下。它们似乎连接正常,但是在运行应用程序时,它们不会触发iBactions(我已经用一些NSLOG确认了这一点,这不是Ibactions中代码中的错误)。我究竟做错了什么?

谢谢!

有帮助吗?

解决方案

AppDelegate仅应用于非常具体的项目,例如实施 UIApplicationDelegate 协议(即类似的方法 applicationDidFinishLaunching)或在某些情况下存储全局变量。

您应该将Ibactions和其他插座保留在其各自的视图控制器文件中(即,如果创建MyViewController.h和myviewController.m,它们与myViewController.xib链接在一起,其中您有一些按钮,映像等)。然后,可以通过将您想要的检查器控件(即TouchupInside)拖动到文件的所有者。

您应该阅读的内容以更好地了解视图控制器: http://developer.apple.com/iphone/library/featuredarticles/viewcontrollerpgforiphoneos/introduction/introduction.html

通常,最好为您将向用户展示的每个视图创建一个唯一的视图控制器。例如,如果我有一个主屏幕,然后是“关于”或设置屏幕,我将使每个视图控制器中的每个人都会制作。它比使用一个视图与您隐藏/显示的一大堆子视图相比,它可以帮助组织事物更好,还可以改善加载时间和一般性能。

在有关访问应用程序委托的评论中的第二个问题更新:

首先,您需要导入.h文件(即 #import "AppDelegate.h")对于应用程序委托到哪个视图控制器.m文件,您想使用的任何变量,数组等,您存储在应用程序委托文件中。确保在应用程序委托会议的.m文件中合成您在应用程序代表的.h文件中创建的任何对象,以创建getters和setter(以便您可以访问它们)。

然后在视图控制器.m文件中,以您使用的哪种方法:

-(void)someMethod { 
 // here we just create a shortcut to the app delegate called "theAppDelegate"
 YourAppDelegateFileNameHere *theAppDelegate = (YourAppDelegateFileNameHere *)[[UIApplication sharedApplication] delegate];

 // now you can use the dot notation if you wanna access a variable
 int SomeNewInteger = theAppDelegate.someIntegerYouHaveStored;

 // or some array you have stored
 return [theAppDelegate.someArrayYouCreated count]; 
 }

希望有帮助!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top