如何在特定索引处显示 UITabBarController?
Posted
技术标签:
【中文标题】如何在特定索引处显示 UITabBarController?【英文标题】:How do I present a UITabBarController at a specific index? 【发布时间】:2018-02-03 16:25:52 【问题描述】:现在我让我的用户从UIPageViewController
完成入职,然后点击“完成”按钮转到我的UITabBarController
的个人资料选项卡。但是,配置文件选项卡位于索引 [2],下面的代码将我带到索引 [0]。
UIViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"tabHostController"];
[self presentViewController:vc animated:YES completion:nil];
点击UIPageViewController
中的“完成”按钮后,如何在特定索引[2]处显示UITabBarController
?
请在 Objective-c 中回答。
【问题讨论】:
【参考方案1】:你可以改变TabBarController的selectedIndex
属性,让它打开你想要的索引
UITabBarController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"tabHostController"];
vc.selectedIndex = 2; // or [vc setSelectedIndex:2];
[self presentViewController:vc animated:YES completion:nil];
【讨论】:
这是 Swift 和 Objective C 代码的组合。 OP 要求提供 Objective C 代码。加上语法似乎不正确。 我不记得Objective C中的关键字“ as!UITabBarController”。每行后面都有分号 仍然不正确。您还没有将 vc 转换为 TabBarController 类。 TabBarController 是一个自定义的 UITabBarController。 以同样的方式查看此处***.com/questions/21606715/… 补充:还有其他小的语法错误。就像在 UITabBarController*vc 中一样,* 之前应该有一个空格,第二行代码应该以分号结尾【参考方案2】:我在我的一个应用程序中使用了以下内容,我必须显示第三个标签。 TabBarController 的viewDidLoad
中只有一行代码:
[self setSelectedIndex:2];
如果您必须仅在开始时(即在入职后和其余启动时显示第 3 个选项卡),则必须在第 3 个选项卡的 UIViewController 的 viewDidLoad
中显示第一个选项卡,分配一个布尔值 NSUserDefault
:
[[NSUserDefaults standardUserDefaults]setBool:YES forKey:@"loadThirdTab"];
所以现在你的 TabBarController 的viewDidLoad
将是:
if( [[NSUserDefaults standardUserDefaults]objectForKey:@"loadThirdTab"]] != nil &&[[NSUserDefaults standardUserDefaults]boolForKey:@"loadThirdTab"])
[self setSelectedIndex:0];
else
[self setSelectedIndex:2];
【讨论】:
他可以在打开之前设置 selectedIndex 无需使用 userdefaults 使代码复杂化 我没有看到任何复杂的情况。任何一种解决方案都可以。以上是关于如何在特定索引处显示 UITabBarController?的主要内容,如果未能解决你的问题,请参考以下文章