Create uiTabBarController programmatically

前端 未结 4 1479
被撕碎了的回忆
被撕碎了的回忆 2021-02-14 09:23

I want to create a UIView for a UITabBarController

Here is my code for the .h file :

@interface TE : UIViewContro         


        
相关标签:
4条回答
  • 2021-02-14 09:45

    Change self.view = tabBarController.view; to
    [self.view addSubview:tabBarController.view]; And it works correctly

    0 讨论(0)
  • 2021-02-14 09:51

    You say above that you don't want to create the tabBarController in the appDelegate. Why not? Where else would you create it? The tabBarController has to be the root view controller and cannot be a child of any other view controller.

    Btw, make sure you implement:

    - (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
    
        NSUInteger tabIndex = [tabBarController.viewControllers indexOfObject:viewController];
    
        if (viewController == [tabBarController.viewControllers objectAtIndex:tabIndex] ) {
             return YES;
        }
    
        return NO;
    
    }
    
    0 讨论(0)
  • 2021-02-14 09:54
    1. Subclass UITabBarController

    2. Override the - (void) loadView method and include the following code

      MyCustomViewControllerOne* ctrl1 = [[[MyCustomViewControllerOne alloc] initWithNibName@"MyViewControllerOne" bundle: nil] autorelease];
      UIViewController* ctrl2 = [[[UIViewController alloc] init] autorelease];
      MyCustomControllerTwo* ctrl3 = [[[UIViewController alloc] initWithObject: myObj] autorelease];
      
      ctrl1.title = @"First tab";
      ctrl2.title = @"Second tab";
      ctrl3.title = @"Third tab";
      
      ctrl1.tabBarItem.image = [UIImage imageNamed:@"tab_image1.png"];
      ctrl2.tabBarItem.image = [UIImage imageNamed:@"tab_image2.png"];
      ctrl3.tabBarItem.image = [UIImage imageNamed:@"tab_image3.png"];
      
      [self setViewControllers: @[ctrl1, ctrl2, ctrl3]];
      

    That's pretty much it.

    0 讨论(0)
  • 2021-02-14 09:56

    Trying changing

    self.view = tabBarController.view;

    to

    [self.view addSubview:tabBarController.view];

    See if that helps.

    Also try placing this in your -(void)loadView method

    - (void)loadView {
    
        UIView *mv = [[UIView alloc] initWithFrame:CGRectMake(0.0, 100.0, 320.0, 480.0)];
    
        self.view = mv;
    
        [mv release];
    }
    

    The reason you probably are experiencing a black screen is because you haven't initialized your UIView properly.

    0 讨论(0)
提交回复
热议问题