iphone - 与 Storyboard中的 UITabBarController 交谈

标签 iphone ios uitabbarcontroller storyboard uistoryboard

所以在我的应用程序中,我使用了 Storyboard,以及初始的 viewControllerUITabBarController .我想要做的是当应用程序启动时,我希望能够设置tabBarController有 3 项或 4 项。所以在 appDel ,我计划检查用户应该看到 3 或 4 个标签的天气,然后是 tabBarController应该反射(reflect)这一点。

我尝试子类化 tabBarController ,但它不工作:

@implementation TabBarController

-(id) init{
    if ((self = [super init])) {
        [[[[self tabBar] items] objectAtIndex:2] setEnabled:YES];
        [[[[self tabBar] items] objectAtIndex:3] setEnabled:NO];
        [[[[self tabBar] items] objectAtIndex:3] setHidden:YES];  
    }
    return self;
}
@end

任何帮助将不胜感激。
提前致谢。

最佳答案

我认为更简单(可能不是最好)的方法是让 TabBar Controller 不是初始 View Controller 并创建两个标签栏 Controller 。从您的初始 View 中,您可以决定使用您将显示的标签栏 Controller 。您还可以将两个选项卡栏 Controller 链接到相同的选项卡/ View Controller (在它们之间重复的那些)。

在初始 View Controller 中,您添加一些代码以了解您将执行哪个 segue,瞧。

像这样的东西:
enter image description here

不过,我正在研究一个代码解决方案(似乎很有趣!)。如果我发现任何东西会更新。

编辑:
这是编码的解决方案。 (我正在使用 Storyboard ,但我相信您可以翻译代码以使用 nib 文件)。

首先要做的是创建 Storyboard的一个实例:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]];

然后实例化tabbarcontroller:
UITabBarController *myTab = [storyboard instantiateViewControllerWithIdentifier:@"tabBar"];

然后实例化要添加到标签栏的新 View Controller :
UIViewController *newVC = [storyboard instantiateViewControllerWithIdentifier:@"newView"];

这是有趣的部分,您将所有 View Controller /选项卡放入一个数组中,然后从该数组中添加或删除 View 。然后将 tabbarcontroller 的 View Controller 设置为修改后的数组(我添加一个 viewController 并删除另一个)。
NSMutableArray* controllers = [myTab.viewControllers mutableCopy];
[controllers insertObject:newVC atIndex:0];
[controllers removeObjectAtIndex:2];
[myTab setViewControllers:controllers];

然后你可以像这样插入你的标签栏 Controller :
[self.navigationController pushViewController:myTab animated:YES];

这里我使用的是 Storyboard和 ARC,如果你不使用 ARC,你可以为 nib 修改它并释放数组。这写起来很有趣!希望能帮助到你!干杯!

关于iphone - 与 Storyboard中的 UITabBarController 交谈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11053732/

相关文章:

iphone - 单击 iPhone 按钮时在 safari 中打开 URL

javascript - 在 ListView 中添加存储在 JSON 数组中的图像 - React Native

c++ - NSPropertyListSerialization propertyListWithData 因二进制 plist 而失败

ios - 如何更改标准 UITabBarItem 上的文本 'More'

ios - 确定在 tabbarcontroller 中选择哪个选项卡

ios - iOS 中的受监管设备和应用程序限制

ios - Objective-C 索引数组

ios - 如何在 Swift 中以编程方式获取 iPad/iPhone 应用程序的大小

ios - 使用服务器进行应用内购买

ios - 将 viewController 的标题更改为 tabbarController