如何将标签栏控制器集成到导航控制器工作流程中?

pro*_*stm 6 uitabbarcontroller uinavigationcontroller ios

我已经获得了具有以下工作流程的设计:

  • 用户登录到应用程序
  • 成功登录后,用户会看到包含数据行的tableview
  • 在单击数据行时,用户将被带到具有选项卡界面的视图控制器.选项卡式界面中的每个视图控制器都可以深入了解tableview中显示的数据的一个方面.
  • 用户可以从任何选项卡按下后退按钮并返回到tableview.

基于此描述,在我看来应用程序需要导航控制器根视图控制器用于登录和tableview,然后在点击表格行时,应用程序需要利用tabbar控制器来深入挖掘数据.

我似乎无法使用故事板将UITabBarController添加到导航控制器.此外,我发现其他SO帖子提出类似的问题,但提供的答案似乎都不是最新的,或使用当前(iOS7/8)最佳实践解决此工作流程.有没有办法完成这个工作流程?如果没有,是否有一个简明的解释我可以用来告知设计师和利益相关者?

bll*_*akk 5

我检查了您的要求。

尽管Apple Inc.不建议在常规使用情况下使用,

https://developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/ViewControllerCatalog/Chapters/TabBarControllers.html#//apple_ref/doc/uid/TP40011313-CH3-SW2

但是,可以通过以下步骤轻松地实现建议的设计原则,从而轻松实现这一目标。

  1. 在故事板上创建类似的设计,请注意导航控制器位于“登录”屏幕之前。

在此处输入图片说明

  1. 实现以下列表方法以通过列表视图以编程方式调用特定选项卡。
 (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"test" forIndexPath:indexPath];
    cell.textLabel.text = [NSString stringWithFormat:@"%ld", (long)[indexPath row]];
    return cell;
}
Run Code Online (Sandbox Code Playgroud)
(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    UITabBarController *tbc = [self.storyboard instantiateViewControllerWithIdentifier:@"MainTabbedViewController"];
    tbc.selectedIndex= (long)[indexPath row];
    [self showViewController:tbc sender:self];
}
Run Code Online (Sandbox Code Playgroud)
  1. 如果列表大小是动态的,则可以通过编程方式创建选项卡项。

https://24hrstech.wordpress.com/2012/08/19/create-tabbarcontroller-programmatically/