AppDelegate 应该只用于非常具体的项目,例如实现UIApplicationDelegate
协议(即方法,如applicationDidFinishLaunching
)或在某些情况下存储全局变量。
您应该将 IBActions 和其他出口保存在它们各自的视图控制器文件中(即,如果您创建了与 MyViewController.xib 链接的 MyViewController.h 和 MyViewController.m,其中有一些按钮、图像等)。然后可以通过将所需的检查器控件(即 TouchUpInside)拖动到文件所有者来连接它们。
您应该阅读以更好地理解视图控制器的内容:http: //developer.apple.com/iphone/library/featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html
通常最好为您将呈现给用户的每个视图创建一个唯一的视图控制器。例如,如果我有一个主屏幕,然后是一个“关于”或设置屏幕,我会让每个屏幕成为他们自己的视图控制器。与使用一个视图和一大堆隐藏/显示的子视图相比,它有助于更好地组织事物,并且还将改善加载时间和总体性能。
在有关访问应用程序委托的评论中更新您的第二个问题:
首先,您需要将#import "AppDelegate.h"
应用程序委托的 .h 文件(即 )导入您想要使用的任何视图控制器 .m 文件,以访问您存储在应用程序委托文件中的任何变量、数组等。确保在应用代理的 .m 文件中合成在应用代理的 .h 文件中创建的任何对象,以便创建 getter 和 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];
}
希望有帮助!