2012-01-19 27 views
1

在Xcode 4.2中,我從「選項卡式應用程序」模板創建了一個新項目。現在我想訪問AppDelegate中的標籤欄控制器,但是此屬性丟失。如何解決問題。如何訪問iOS 5中的標籤欄控制器?

在以前版本的Xcode,我可以通過調用self.tabBarController訪問它,但是,我不能這樣做,在iOS的5

回答

3

沒有什麼神奇與出現在tabBarController財產發生「標籤的應用「模板項目。我猜iOS 5之前的模板是設計好的,以便選項卡控制器已經成爲你的附屬插座。如果它不在你使用的模板中,那麼你只需要自己添加屬性。以下是如何操作的說明。

你只需要爲它添加一個屬性,然後從UIWindowapplicationDidFinishLaunching中獲取rootViewController。例如,你希望這樣的事情在你的應用程序代理頭:

@interface MyAppDelegate : NSObject <UIApplicationDelegate> 
... 
@property (nonatomic, strong) UITabBarController *tabBarController; 
... 
@end 

然後從rootViewController合成在你的應用程序委託實施,抓住它:

@implementation MyAppDelegate 

@synthesize tabBarController; 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    self.tabBarController = (UITabBarController*)self.window.rootViewController; 
    return YES; 
} 

@end 
+0

你必須初始化UITabBarDelegate方法@interface MyAppDelegate:NSObject Hiren

+0

你不*有*做到這一點。只有當你想成爲它的代表。 – mattjgalloway

+0

@mattjgalloway,在iOS 5和Xcode 4.2中,我找不到MainWindow.xib並且正在使用故事板。你在使用Xcode 4.2嗎? – user403015

1

如果你就像使用4.2,我是相當肯定,對的appDelegate,其自動添加

@property (strong, nonatomic) UITabBarController *tabBarController; 

ü可以用u've一直使用方法來訪問它的實現文件,self.tabBarController

只是確保它的正確的實現文件合成和u寫在適當的方法體

我很抱歉的代碼,但即時通訊不是很清楚你的問題是什麼

+0

我正在使用故事板,沒有UITabBarController的屬性。 – user403015

+0

然後,你可以很容易地將上面的屬性添加到頭文件中,至少當你不知道自己在做什麼時,不要拒絕你不明確的投票答案,這表明你缺乏尊重他人 –