Iphone 导航控制器中的选项卡栏控制器确实可以工作,但参考称它赢了';T

Iphone 导航控制器中的选项卡栏控制器确实可以工作,但参考称它赢了';T,iphone,ios,xcode,uinavigationcontroller,uitabbarcontroller,Iphone,Ios,Xcode,Uinavigationcontroller,Uitabbarcontroller,说明pushViewController:animated:method无法将选项卡栏控制器的实例推送到堆栈上,我还阅读了以下文章: 但是,似乎在导航控制器的堆栈中添加UITabBarController实例对我来说效果很好。我使用的是XCode 4.2(当然是beta版)+iOS 5,并制作了如下示例代码: - (void)viewDidLoad { [super viewDidLoad]; self.secondCtrl = [[[SecondViewController alloc

说明pushViewController:animated:method无法将选项卡栏控制器的实例推送到堆栈上,我还阅读了以下文章:

但是,似乎在导航控制器的堆栈中添加UITabBarController实例对我来说效果很好。我使用的是XCode 4.2(当然是beta版)+iOS 5,并制作了如下示例代码:

- (void)viewDidLoad
{
  [super viewDidLoad];
  self.secondCtrl = [[[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil] autorelease];
  self.secondCtrl.title = @"Second";
  self.thirdCtrl = [[[ThirdViewController alloc] initWithNibName:@"ThirdViewController" bundle:nil] autorelease];
  self.thirdCtrl.title = @"Third";

  self.tabCtrl = [[[UITabBarController alloc] init] autorelease];
  self.tabCtrl.title = @"Tab!";
  self.tabCtrl.viewControllers = [NSArray arrayWithObjects:self.secondCtrl, self.thirdCtrl, nil];
}

- (IBAction)goNext:(id)sender {
  [self.navigationController pushViewController:self.tabCtrl animated:YES];
}
上面的代码片段是窗口的根视图控制器源代码的一部分


我想知道苹果的参考资料过时了,或者我的代码工作异常?

UIAbbarController继承自UIViewController,因此,正如您的代码所示,可以将其推到导航堆栈上,但苹果通常不推荐它。来自苹果:

通常,使用选项卡栏在应用程序级别组织信息。选项卡栏非常适合在主应用程序视图中使用,因为它是一种很好的方法,可以使您的信息层次结构扁平化,同时提供对多个对等信息类别或模式的访问

当然,这条规则总是有例外,所以我建议你用你最好的判断,决定什么对用户最有利