self.tabBarController为NULL

时间:2011-06-22 18:25:11

标签: iphone objective-c uinavigationcontroller uitabbarcontroller

我创建了一个像下面这样的UITabBarController并推送了一个navigationController,但我现在无法设置标签栏项目的标题等......因为tabbarcontroller是NULL。

请告诉我我哪里出错了。

UITabBarController *tabBarController = [[UITabBarController alloc] init];
        LoggedInFeedNavigationController *lvc = [[LoggedInFeedNavigationController alloc] initWithAccount:account];
        [tabBarController setViewControllers:[NSArray arrayWithObject:lvc]];
        [tabBarController setSelectedIndex:0];
        [self presentModalViewController:tabBarController animated:YES];
        [tabBarController release];
        [lvc release];

3 个答案:

答案 0 :(得分:6)

在tabBarController的documentation中,我看到以下内容

  

如果没有标签栏或者   接收器是模态视图,这个   财产是零。

在评论中,它表示你正在LoggedInFeedNavigationController内调用self.tabBarController,我认为它应该可以正常工作。但是你以模态方式显示标签栏,如果文档意味着即使它在UITabBarController中作为模态视图,那么那就是你的问题。

答案 1 :(得分:0)

在我看来,就像你在没有完成它时释放标签栏控制器一样。你想初始化它一次,只有当你完成它时才会释放它,就像在dealloc方法中一样。

答案 2 :(得分:0)

乔是完全正确的。自定义segues也是如此。 (例如:SWRevealViewController等)

这就是我根据Joe的答案和苹果文档来完成它的工作。 在YourTabBarViewController.h文件中添加以下内容:

 @property (nonatomic, retain) UITabBarController * myTabBarController;

然后在viewDidLoad中的YourTabBarViewController.m文件中添加以下内容:

self.myTabBarController = self;
self.myTabBarController.delegate = self;