我有带有导航控制器的UItabBarTemplate app
在选择标签栏时,会显示ViewControllerA,按钮触摸按下UIPieChartTabController,继承“UIViewController”。
现在我想在UIPieChartTabController中使用另一个标签栏
所以在UIPieChartTabController的viewDidLoad中
- (void)viewDidLoad {
[super viewDidLoad];
UIView *contentView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
contentView.backgroundColor = [UIColor whiteColor];
self.view = contentView;
[contentView release];
UITabBarController *tabbar= [[UITabBarController alloc] init];
tabbar.view.frame = CGRectMake(0, 0, 320, 460);
piechartViewController *pr=[[piechartViewController alloc]init];
pr.tagInAction=1;
pr.title=@"Type";
pr.tabBarItem.image=[UIImage imageNamed:@"trend.png"];
pr.sDate=sDate;
pr.nDate=nDate;
piechartViewController *pr1=[[piechartViewController alloc]init];
pr1.title=@"category";
pr1.tagInAction=4;
pr1.sDate=sDate;
pr1.nDate=nDate;
piechartViewController *pr2=[[piechartViewController alloc]init];
pr2.title=@"paidWith";
pr2.tagInAction=3;
pr2.sDate=sDate;
pr2.nDate=nDate;
//tabbar.tabBar.delegate=self;
//this gave me error
ExportRep *pr3=[[ExportRep alloc]init];
pr3.tabBarItem.image=[UIImage imageNamed:@"database.png"];
pr3.title=@"Export Expenses";
[tabbar setViewControllers:[NSArray arrayWithObjects:pr,pr1,pr2,pr3,nil]];
[self.view addSubview:tabbar.view];
[pr release];
[pr1 release];
[pr2 release];
}
这段代码有效但现在当我选择viewController ExportRep类型的tab时,我试过
[self presentModalViewController:objMFMailComposeViewController animated:YES];
但objMFMailComposeViewController的navigationController隐藏在呈现objMFMailComposeViewController的视图的navigationController后面。
另外viewWillAppear viewDidAabar绑定到标签栏的所有视图控制器永远不会被调用。
但是,由UITabbarTemplate创建的tabbar和viewcontroller都不会出现这个问题 为什么会这样?我创建Tab栏时有什么问题?
答案 0 :(得分:0)
不建议在tabbarVC中放置另一个tabBar。为什么不使用UIToolBar来替换PieChartVC中的Views呢?
- 从那里开始,你的代码没有调用viewWillAppear,viewDidAppear是因为:
[tabbar setViewControllers:[NSArray arrayWithObjects:pr,pr1,pr2,pr3,nil]];
[self.view addSubview:tabbar.view];
这里只会调用那些prs的loadView。
您分配给tabBars的viewControllers应该包含在UINavigationControllers周围。
所以这样的事情就可以解决问题
UINavigationController *nc1 = [[UINavigationController alloc]initWithRootViewController:pr];
[nc1.view setFrame:CGRectMake:("the frame in which you wnt prs to be displayed")];
[pr.view setFrame:nc1.view.frame];
. // similarly assign NavControllers for all prs
.
.
.
[tabbar setViewControllers:[NSArray arrayWithObjects:nc,nc1,nc2,nc3,nil]];
[self.view addSubview:tabbar.view];
答案 1 :(得分:0)
以模态方式呈现的新视图隐藏导航栏的原因在于 [self.view addSubview:tabbar.view];
因此它只有在父控制器视图中显示其视图的空间,因此切断了它的导航栏
所以要破解它我选择了选项卡,而不是在选定的视图控制器中显示它,只在主视图控制器中显示它。