如何在特定索引处显示 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】:

你可以改变TabBarControllerselectedIndex属性,让它打开你想要的索引

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】:

我在我的一个应用程序中使用了以下内容,我必须显示第三个标签。 TabBarControllerviewDidLoad 中只有一行代码:

[self setSelectedIndex:2];  

如果您必须仅在开始时(即在入职后和其余启动时显示第 3 个选项卡),则必须在第 3 个选项卡的 UIViewController 的 viewDidLoad 中显示第一个选项卡,分配一个布尔值 NSUserDefault

[[NSUserDefaults standardUserDefaults]setBool:YES forKey:@"loadThirdTab"];  

所以现在你的 TabBarControllerviewDidLoad 将是:

if( [[NSUserDefaults standardUserDefaults]objectForKey:@"loadThirdTab"]] != nil &&[[NSUserDefaults standardUserDefaults]boolForKey:@"loadThirdTab"])
   [self setSelectedIndex:0];
else
    [self setSelectedIndex:2];

【讨论】:

他可以在打开之前设置 selectedIndex 无需使用 userdefaults 使代码复杂化 我没有看到任何复杂的情况。任何一种解决方案都可以。

以上是关于如何在特定索引处显示 UITabBarController?的主要内容,如果未能解决你的问题,请参考以下文章

在 NSMutableArray 的特定索引处添加对象

如何在 char 数组的特定索引处获取实际值

如何将特定索引处的列表数据发送到颤动中另一个列表的特定索引

Java ArrayList 在特定索引处替换

如何替换python列表特定索引处的值?

如何从python列表中任何特定索引处的句子中提取特定字符串?