【问题标题】:How do I present a UITabBarController at a specific index?如何在特定索引处显示 UITabBarController?
【发布时间】: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 中回答。

【问题讨论】:

    标签: ios objective-c uitabbarcontroller uipageviewcontroller


    【解决方案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。
    • 以同样的方式查看此处stackoverflow.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 使代码复杂化
    • 我没有看到任何复杂的情况。任何一种解决方案都可以。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-06
    • 2023-02-16
    • 1970-01-01
    • 2017-04-23
    • 2019-02-17
    • 1970-01-01
    • 2020-09-26
    相关资源
    最近更新 更多