apple's UINavigation Controller Class Reference表示pushViewController:animated:方法无法将选项卡栏控制器的实例推入堆栈,并且我还阅读了以下文章:Tab bar controller inside a navigation controller, or sharing a navigation root view

但是,将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];
}


上面的代码段是窗口的根视图控制器的源代码的一部分。

我想知道苹果的引用已过期或我的代码奇怪吗?

最佳答案

UITabBarController继承自UIViewController,因此,如您的代码所示,可以将其推入导航堆栈中,但是Apple通常不推荐这样做。从苹果iOS Human Interface Guidelines


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


当然,该规则总是有例外的,因此我建议您使用最佳判断,并确定最适合用户的。

关于iphone - 导航 Controller 中的选项卡栏 Controller 可以工作,但是引用资料说不会,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7643452/

10-13 03:49