【问题标题】:iOS Storyboard switch views with differents tabbariOS Storyboard 使用不同的标签栏切换视图
【发布时间】:2013-06-22 10:30:29
【问题描述】:

我正在开发一个 iOS 应用。该应用程序有两种状态:用户已登录,用户未登录。

如果您启动应用程序(用户未登录),则有两个选项卡。然后,如果您愿意,您可以登录,并且该应用程序必须显示 4 个选项卡。如果您关闭应用并重新启动,应用必须显示 4 个选项卡。

我使用用户首选项来存储用户凭据以了解用户是否已登录,但我该如何实现呢?

如何(使用情节提要)显示带有 4 个选项卡或 2 个选项卡的选项卡栏?

而且,当应用程序正在执行时(当您初始化应用程序并且您没有登录并且您登录时),我如何将 2tabs 选项卡更改为 4tabs 选项卡?

谢谢。请,如果您能提供代码示例,我将不胜感激。

解决方案: 您必须创建三个故事板。例如:

init.storyboard
logged.storyboard (with 4 tabs)
nologged.storyboard (with 2 tabs)

在 init.storyboard 你可以开始你想要的故事板

UIViewController *viewController;

if(user is logged)
  viewController = [[UIStoryboard storyboardWithName:@"Logged" bundle:NULL] instantiateViewControllerWithIdentifier:@"init_tab"];
else
  viewController = [[UIStoryboard storyboardWithName:@"NoLogged" bundle:NULL] instantiateViewControllerWithIdentifier:@"init_tab"];

[self presentViewController:viewController animated:NO completion:nil];

然后,当您想要显示具有 4 个标签或 2 个标签的应用时,您应该执行相同的“启动”

UIViewController *vc = [[UIStoryboard storyboardWithName:@"Logged" bundle:NULL] instantiateViewControllerWithIdentifier:@"init_tab"];
[self presentViewController:vc animated:YES completion:^{}];

此代码用于 nologged.storyboard 中的控制器

检查我是否在情节提要上使用了标识符“init_tab”,因此如果您愿意,可以在每个情节提要的视图上放置一个标识符。

【问题讨论】:

  • 我有解决办法。如果有人想要解决方案,请写在这里。 (解很大)
  • 我会对解决方案感兴趣 - 提前致谢
  • 我把我的解决方案brainray

标签: iphone ios storyboard tabbar


【解决方案1】:

我认为这在您的代码中更容易,使故事板中的所有内容正常。将附加的4个视图放在标签栏上。

然后取决于用户是否登录或不隐藏或单隐藏方法以编程方式显示 2 个视图...

编辑:在您的 viewdid 加载中,2 个视图应该是 view.hiden = YES; 然后在另一种方法中,例如当用户登录时 make view.hiden = No;

这只是一个开始的想法

【讨论】:

  • 带有 2 个标签的标签栏显示视图 A 和 B。带有 4 个标签的标签栏显示视图 A、C、D、E
【解决方案2】:

因此您将要修改标签栏的viewControllers 属性。一旦收到用户登录的通知,您可以选择添加两个新的视图控制器,或者默认设置 4 个,如果用户未登录,则删除它们。您可以签入applicationDidFinishLaunching,然后获取您的带有self.window.rootViewController 的tabBarController。

【讨论】:

  • viewControllers 默认情况下是不可变的,因此您必须创建一个可变副本来添加/删除项目
  • mros,是的。而且您不能修改链接到 tabbarcontroller 的 tabbar(我正在使用故事板和 tabbarcontroller)
  • 所以在UITabBarController上有一个叫做setViewControllers:animated:的方法
猜你喜欢
  • 2012-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-16
相关资源
最近更新 更多