AppDelegate只能用於非常特定的項目,例如實施UIApplicationDelegate
協議(即applicationDidFinishLaunching
等方法),或者在某些情況下存儲全局變量。
您應該將IBActions和其他插件保留在它們各自的視圖控制器文件中(即,如果您創建了與MyViewController.xib鏈接的MyViewController.h和MyViewController.m,並且您有一些按鈕,圖像等)。然後,可以通過將所需的檢查器控件(即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];
}
希望幫助!
謝謝!在視圖控制器中從AppDelegate訪問對象怎麼樣?我宣佈AppDelegate是這樣的: //接口 AppDelegate * appDelegate; @property(nonatomic,retain)AppDelegate * appDelegate; // Implementation @synthesize appDelegate; appDelegate =(AppDelegate *)[[UIApplication sharedApplication] delegate]; 但是當我嘗試做某事時,我總是會「訪問未知的getter方法」。抱歉,stackoverflow不會讓我很好地格式化我的評論。 – 2010-06-30 12:30:31
請查看我的更新回覆,瞭解如何正確調用它。這與應用程序委託有點不同,因爲你不需要設置屬性或像你在做什麼合成它(這就是爲什麼你得到未知的getter方法錯誤) – iwasrobbed 2010-06-30 13:14:07
P.S.如果答案對你有用,請養成習慣於對最有用的答案作出回答。這有點像在背後給予人們拍拍他們的幫助:) – iwasrobbed 2010-06-30 13:16:29