一个选项卡栏控制器项目应该隐藏在iPhone应用程序中



我正在开发一个应用程序,在其中我使用选项卡栏控制器。当应用程序打开时,它应该只显示一个选项卡栏项目"Restaurants",当我从任何餐厅的菜单中选择一些食物项目时,应该显示另一个名为items的选项卡栏视图控制器。请帮助我如何做到这一点。

提前谢谢。

这里有一种方法:

  1. 根据需要创建应用程序,并确保在添加TabBarController时,应该只有一个选项卡项目(删除添加选项卡控制器时默认添加的其他项目)

  2. 创建UITabBarController 的新子类

  3. 从故事板中分配所有控制器的类,以及指定特定的故事板标识符

  4. 声明我在AppDelegate.h 中添加的BOOL类型的全局属性(在用户默认值中或您想要维护的位置)

    @property (assign, nonatomic) BOOL isAddNew;
    
  5. 现在,从你想在选项卡中添加(显示)新选项卡的地方,添加代码,我的代码是:

    - (IBAction)addNewTab:(id)sender
    {
        AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
        appDelegate.isAddNew = TRUE;
        [self.tabBarController viewDidLoad];
    }
    
  6. 然后转到您的自定义选项卡控制器(它是在步骤2->UITabBarController的子类中创建的),我的类是.h

    #import <UIKit/UIKit.h>
    @interface TabViewController : UITabBarController
    @end
    

.m

#import "TabViewController.h"
#import "AppDelegate.h"
#import "ViewController2.h"
#import "ViewController3.h"
@interface TabViewController ()
{
    AppDelegate *appDelegate;
}
@end
@implementation TabViewController
- (void)viewDidLoad
{
    [super viewDidLoad];
    appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    if (appDelegate.isAddNew == TRUE)
    {
        ViewController2 *view2 = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewController2"];
        //ViewController3 *view3 = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewController3"];
        NSMutableArray *tabViewControllers = [self.viewControllers mutableCopy];   //  [[NSMutableArray alloc] init];
        [tabViewControllers addObject:view2];
        //[tabViewControllers addObject:view3];
        [self setViewControllers:tabViewControllers];
        //can't set this until after its added to the tab bar
        // ------ First way ------
        view2.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"Second" image:[UIImage imageNamed:@"selectimg.png"] tag:1];
        // ------ Second way ------
        view2.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"Second" image:[UIImage imageNamed:@"deselectimg"] selectedImage:[UIImage imageNamed:@"selectimg.png"]];
        // ------ Third way ------
        view2.tabBarItem = [[UITabBarItem alloc] init];
        view2.tabBarItem.selectedImage = [[UIImage imageNamed:@"selectimg.png”]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
        view2.tabBarItem.image = [[UIImage imageNamed:@"deselectimg.png”]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ];
        view2.tabBarItem.title = @"Second";
        //view3.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"Third" image:[UIImage imageNamed:@"third.png"] tag:2];
        [appDelegate.window setRootViewController:self];
    }
}
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

最新更新