【问题标题】:how to create a tabbar programmatically and adding buttons on it如何以编程方式创建标签栏并在其上添加按钮
【发布时间】:2010-07-10 21:55:59
【问题描述】:

我想在我的视图中以编程方式将按钮添加到我的标签栏...

我有导航控制器,但它不允许我添加这些.. 我想在我看来以编程方式创建...

【问题讨论】:

    标签: iphone xcode button tabbar


    【解决方案1】:

    由于标签栏控制器是一个容器视图控制器,可用于将应用程序划分为两种或多种不同的操作模式,因此大多数应用都将导航控制器作为标签栏控制器的子级。

    苹果的立场是这样的:

    您在 您的应用程序的情况 要么呈现不同类型的 数据或呈现相同的数据 明显不同的方式。

    这并不是说你不能做不同的事情......你的主要问题是你已经在应用程序中放置了一个导航控制器,并且你想以编程方式创建标签栏控制器。因此,我可以看到这一点的唯一方法是,您不介意每次更改导航控制器中的屏幕时标签栏控制器是否更改。一些应用程序以这种方式工作。大多数没有。

    如果我的上述假设是正确的,我建议您重新考虑您的代码,看看您是否想要继续这一发展路线。如果是这样,您可以轻松地创建一个标签栏控制器并将其附加到当前视图中。

    这是我用来为我的一个应用创建设置的代码:

    // set up a local nav controller which we will reuse for each view controller
    UINavigationController *localNavigationController;
    
    // create tab bar controller and array to hold the view controllers
    UITabBarController *tabBarController = [[UITabBarController alloc] init];
    
    NSMutableArray *localControllersArray = [[NSMutableArray alloc] initWithCapacity:1];
    
    // setup the first view controller (Root view controller)
    RootViewController *myViewController;
    myViewController = [[RootViewController alloc] initWithTabBar];
    
    // create the nav controller and add the root view controller as its first view
    localNavigationController = [[UINavigationController alloc] initWithRootViewController:myViewController];
    localNavigationController.navigationBar.barStyle = UIBarStyleBlack;
    localNavigationController.delegate = self;
    
    [localControllersArray addObject:localNavigationController];
    
    // release since we are done with this for now
    [localNavigationController release];
    [myViewController release];
    
    tabBarController.viewControllers = localControllersArray;
    tabBarController.moreNavigationController.navigationBar.barStyle = UIBarStyleBlack;  
    
    tabBarController.delegate = self;
    tabBarController.moreNavigationController.delegate = self;
    
    // release the array because the tab bar controller now has it
    [localControllersArray release];
    
    self.tabBarController.selectedIndex = 0;
    
    // add the tabBarController as a subview in the window
    [window addSubview:tabBarController.view];
    
    // need this last line to display the window (and tab bar controller)
    [window makeKeyAndVisible];
    

    在很多情况下,我觉得以编程方式完成所有事情会更容易。

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      您必须保留对标签栏控制器的引用。例如,您可以将其保存在 App Delegate 中...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多