我最近做了一些项目重组,现在我没有看到我的标签栏控制器,但它的第一个视图控制器的视图正在出现。以下是在发生问题之前发生的所有事情的细目。我的UITabBarController没有出现,但它的第一个视图是?
应用程序委托使用nib加载FirstViewController。 FirstViewController从我的服务器加载应用程序数据,然后用模态转换呈现MainViewController。 MainViewController是UITabBarController应该出现的位置。这是一个非常简单的课程。
的.H
@interface MainViewController : UIViewController <UITabBarControllerDelegate> {
IBOutlet UITabBarController *tabBarController;
}
@property (nonatomic, retain) UITabBarController *tabBarController;
@end
的.M
@implementation MainViewController
@synthesize tabBarController;
- (void)viewDidLoad {
NSLog(@"MainViewController viewDidLoad");
//set tab bar controller delegate to self
tabBarController.delegate = self;
// home view
HomeViewController *home = [[HomeViewController alloc] initWithTab];
// menu view
MenuViewController *menu = [[MenuViewController alloc] initWithTab];
// special offers view
SpecialOffersViewController *so = [[SpecialOffersViewController alloc] initWithTab];
// events view
EventsViewController *events = [[EventsViewController alloc] initWithTab];
// info view
InfoViewController *info = [[InfoViewController alloc] initWithTab];
//populate the tab bar controller with view controllers
NSArray *controllers = [NSArray arrayWithObjects:home, menu, so, events, info, nil];
tabBarController.viewControllers = controllers;
//release view controllers
[home release];
[menu release];
[so release];
[events release];
[info release];
[controllers release];
//add tab bar controller to view
[self.view addSubview:tabBarController.view];
[super viewDidLoad];
}
,这里是从FirstViewController位是模态呈现MainViewController ...
MainViewController *controller = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];
controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:controller animated:YES];
[controller release];
我没有变任何编译器错误或警告和应用程序运行膨胀...没有崩溃。它只是没有显示出恶梦的TabBar,并且它在我在AppDelegate上创建它时习惯了。我检查了我的NIB中的所有内容,并且我的网点似乎已经连接好了。我不知道发生了什么事。帮帮我!
好一点,但是这并没有解决它。实际上最终做的工作是在我将控制器的视图设置为tabBarController的视图之前添加这个。 的CGRect帧= CGRectMake(self.view.frame.origin.x, \t \t \t \t \t \t \t self.view.frame.origin.y, \t \t \t \t \t \t \t self.view.frame.size .width, \t \t \t \t \t \t \t self.view.frame.size.height); tabBarController.view.frame = frame; 我从谷歌搜索捡起来。我不应该这样做,但它是有效的。 – 2010-03-12 03:02:30
实际上,[NSArray arrayWithObjects]生成一个保留计数为1的对象,它将在未来的某个地方发布。它不能返回保留计数= 0的对象,因为这意味着它将被释放。 – 2011-02-18 21:21:21
@Andrei的权利。 '+ 0'是一个表示自动释放对象的惯例。 ('+ 0'!='0') – 2011-02-18 21:33:16