如何在iOS 5中访问标签栏控制器?

时间:2012-01-19 16:58:31

标签: iphone ios ipad

在Xcode 4.2中,我从“选项卡式应用程序”模板创建了一个新项目。现在我想访问AppDelegate中的标签栏控制器,但缺少此属性。如何解决问题。

在Xcode的早期版本中,我可以通过调用self.tabBarController来访问它,但是,我无法在iOS 5中执行此操作。

2 个答案:

答案 0 :(得分:3)

“选项卡式应用程序”模板项目中出现的tabBarController属性没有任何神奇之处。我想iOS 5之前的模板设计是为了让标签控制器已经设置为你的连接插座。如果它不在你正在使用的模板中,那么你只需要自己添加属性。以下是如何执行此操作的说明。

您只需为其添加一个属性,然后从rootViewController中的UIWindow抓取applicationDidFinishLaunching。即你在你的app delegate标题中想要这样的东西:

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

然后在您的app委托实现中对其进行综合,并从rootViewController

中获取它
@implementation MyAppDelegate

@synthesize tabBarController;

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

@end

答案 1 :(得分:1)

如果您使用4.2,我很确定在appDelegate上,它会自动添加

@property (strong, nonatomic) UITabBarController *tabBarController;

你可以使用你一直在使用的方法,self.tabBarController

在实现文件上访问它

只需确保它在实现文件上正确合成,并将代码编写在正确的方法体中

我很抱歉,但我不太清楚你的问题是什么