添加Kal Calendar作为标签栏项目的根控制器,而不是使用导航控制器

时间:2011-08-28 23:49:56

标签: iphone objective-c ios cocoa-touch

Kal日历控制器的示例全部初始化app委托中的控制器并推送navigationController。我尝试了它确实有效,但是我需要我的日历作为我的一个Tabbar项目的rootController,它被添加到主笔尖中。

我尝试的是在项目的nib中添加一个UIViewController类作为根类,然后在视图控制器中初始化日历:

KalViewController *calendar = [[KalViewController alloc] init];
[self.view addSubview:calendar];
[calendar release];

如果我触及月份,日期等,它会显示但崩溃...

或者,我创建了一个基于KalViewController的类,并将其作为我的标签栏项的根类。但是在没有显示的情况下立即崩溃。

也许可以将KalViewController直接添加到标签栏viewController数组中,但是我使用app delegate在nib中创建了标签栏。我不知道如何添加它。

1 个答案:

答案 0 :(得分:1)

我最近不得不这样做,我将日历选项卡从MainWindow.xib中移出,然后在appDelegate中我抓住了tabBarControllers列表中的ViewControllers将它们加载到mutableArray中,将KalViewController插入到我想要的位置然后设置回到tabBarController。

calendarDataSource = [[CalendarDataSource alloc] init];
// I had to override a few things in the calendar so I subclassed it. You get the idea though
_kalViewController = [[MyKalViewController alloc] init];
_kalViewController.dataSource = self.calendarDataSource;

_kalViewController.delegate = _kalViewController;
UINavigationController *navigationController = [[[UINavigationController alloc] initWithRootViewController:_kalViewController] autorelease];
navigationController.tabBarItem.title = @"Calendar";
navigationController.tabBarItem.image = [UIImage imageNamed:@"cal-tab.png"];
NSMutableArray *viewControllers = [self.tabBarController.viewControllers mutableCopy];
[viewControllers insertObject:navigationController atIndex:1];
self.tabBarController.viewControllers = viewControllers;