我获得了以下工作流程的设计:
基于此描述,在我看来应用程序需要导航控制器根视图控制器用于登录和tableview,然后在点击表格行时,应用程序需要利用tabbar控制器来深入挖掘数据。
我似乎无法使用故事板将UITabBarController添加到导航控制器。此外,我发现其他SO帖子提出类似的问题,但提供的答案似乎都不是最新的,或使用当前(iOS7 / 8)最佳实践解决此工作流程。有没有办法完成这个工作流程?如果没有,是否有一个简明的解释我可以用来通知设计师和利益相关者?
答案 0 :(得分:4)
我检查了你的要求。
虽然Apple Inc.不推荐常规用例,
但通过以下步骤可以通过一些方法轻松实现建议的设计原则。
(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; }
(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UITabBarController *tbc = [self.storyboard instantiateViewControllerWithIdentifier:@"MainTabbedViewController"];
tbc.selectedIndex= (long)[indexPath row];
[self showViewController:tbc sender:self];
}
https://24hrstech.wordpress.com/2012/08/19/create-tabbarcontroller-programmatically/
答案 1 :(得分:4)
Apple建议UITabBarController
主要用作根视图控制器。
在您的情况下,我建议在正常UISegmentedControl
的视图上使用UIViewController
而不是UITabBarController
。使用某些逻辑,您可以在建议的UIViewController
中显示与被按下的UISegmentedControl
段相对应的不同视图。
此外,如果您使用的是导航控制器,则可以将UISegmentedControl
嵌入导航栏中作为标题。 (请参阅电话应用程序中的“最近”标签。
答案 2 :(得分:3)
我为我正在使用的应用程序使用了类似的功能。在我的应用中,
我登录并在导航控制器中注册,登录/注册成功后,它会转到另一个具有表格视图的导航控制器。
点击表格中的“旅游”单元格后,我将转到标签栏控制器,其中的标签包含有关4个不同位置的不同详细信息。在任何选项卡中,您都可以通过单击导航栏中的后退按钮返回成功登录后显示的主表视图。
如果这是你需要的,我已经按照上面的答案中的'嵌入'标签栏控制器。它对我来说很完美。我的应用程序处于纵向模式。我听说这会在横向模式下造成问题。我是初学者,我在横向模式下也没有尝试过。
在登录视图控制器之后为表视图嵌入新的导航控制器。我在我的应用程序中使用相同的。
答案 3 :(得分:3)
这是你需要做的。
这里我使用按钮进行导航,因为我没有使用完整描述创建视图,但不需要使用Table View Controller或tabbar绑定按钮。
1.。)选择View Controller,然后转到编辑> 嵌入> 导航控制器
2.。)使用表视图控制器绑定视图控制器。
3。)将识别设置为segue,以便您可以根据登录成功调用执行segue。
4.。)为了使用tabbar正确导航,您需要先将Tabbar控制器与View Controller绑定,然后将导航控制器嵌入到tabbar中。 类似地,您也可以将导航控制器嵌入到tabbar控制器中,但它不是正确的流程。
5.)最后,你的故事板看起来会像。
6。)结果
希望它有助于解决你的问题。
答案 4 :(得分:0)
在导航控制器中嵌入标签控制器并不是很困难,您可以通过将导航控制器设置为rootViewController来实现,然后创建一个从tableview单元格开始到tabBarController的segue,这里是{{3您的工作流程。
答案 5 :(得分:0)
你可以像这样设计你的用户界面
希望这会有所帮助......
答案 6 :(得分:0)
虽然可行,但建议不要在导航栏中嵌入标签栏。我反对Apple指南,用户习惯将标签栏作为根控制器。
我只想在某些情况下显示标签栏,我建议在导航控制器顶部以模态方式显示它。
来自Apple:
在创建标签栏界面之前,您需要确定自己的意图 使用标签栏界面。因为它强加了一个总体 对您的数据进行组织,您应该只使用这些特定的数据 方法:
- 直接将其安装为窗口的根视图控制器。
- 安装为 拆分视图界面中的两个视图控制器之一。 (仅限iPad)
- 从另一个视图控制器以模态方式显示它。
- 从a显示 酥料饼。 (仅限iPad)
在应用的主页面中安装标签栏界面 窗口是目前使用它的最常用方式。 在这种情况下, 标签栏界面提供了基本的组织原则 对于您的应用程序的数据,每个选项卡将用户引导至不同的部分 该应用程序。您可以单独使用标签栏控制器 与其他视图控制器结合以创建更多 复杂的界面。有关更多信息,请参阅组合视图 控制器接口。
如果非常的话,也可以以模态方式显示标签栏控制器 具体需要使这样做有价值。例如,你可以 以模态方式呈现标签栏控制器以编辑某些复杂 具有多个不同选项集的数据集。因为一个模态 视图填充全部或大部分屏幕(取决于设备), 标签栏的存在只会反映可用的选择 查看或编辑模态显示的数据。避免使用标签栏 这样就可以使用更简单的设计方法。
答案 7 :(得分:0)
您不能将TabBarController从表格视图单元格中推送为" Push现在已被删除"。您可以在故事板中按照以下步骤操作:
答案 8 :(得分:0)
您可以使用MHCustomTabBarController使用Apples Custom Container ViewController API构建它,并且可以嵌套在导航控制器中