Tabbar控制器加载空xib

时间:2012-09-06 11:22:38

标签: iphone xcode4 uinavigationcontroller tabbarcontroller

我正在尝试使用3个按钮构建一个主视图开头的应用程序,然后当用户按下这些按钮的任何按钮时,标签栏视图将显示所选的标签栏项目。

我的问题在这里,当标签栏视图出现时...它显示为空!

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.

    MainMenuViewController *mainMenuViewController = [[[MainMenuViewController alloc] initWithNibName:@"MainMenuViewController" bundle:nil] autorelease];
    self.navigationController = [[[UINavigationController alloc] initWithRootViewController:mainMenuViewController] autorelease];
    self.window.rootViewController = self.navigationController;
    [self.window makeKeyAndVisible];
    return YES;
}

//主菜单视图中的按钮操作      -

 (IBAction)button1Action:(id)sender {
        TabbarViewController *tempView = [[TabbarViewController alloc] initWithNibName:@"TabbarViewController" bundle:nil];
        [self.navigationController pushViewController:tempView animated:YES];
        [tempView release];
    }

enter image description here

1 个答案:

答案 0 :(得分:0)

你必须设置TabbarViewController的viewControllers属性(当然,如果它是UITabBarController的超类)。在TabbarViewController的init方法中创建3个viewControllers,将它们添加到数组并将其设置为viewControllers属性,如下所示:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        NSLog(@"%@",[[self class] superclass]);

        UIViewController *yourFirstViewController = [[UIViewController alloc] init];
        UIViewController *yourSecondViewController = [[UIViewController alloc] init];
        UIViewController *yourThirdViewController = [[UIViewController alloc] init];

        yourFirstViewController.title = @"First";
        yourSecondViewController.title = @"Second";
        yourThirdViewController.title = @"Third";

        NSArray *threeViewControllers = [[NSArray alloc]initWithObjects:yourFirstViewController, yourSecondViewController, yourThirdViewController, nil];

        self.viewControllers = threeViewControllers;

        // Custom initialization
    }
    return self;
}