Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UITabBarController不显示tabbarItems名称_Iphone_Ios_Uitabbarcontroller_Uitabbaritem - Fatal编程技术网

Iphone UITabBarController不显示tabbarItems名称

Iphone UITabBarController不显示tabbarItems名称,iphone,ios,uitabbarcontroller,uitabbaritem,Iphone,Ios,Uitabbarcontroller,Uitabbaritem,我正在创建基于UTabbarController的应用程序。我以编程方式创建了该选项卡栏。除了我看不到tabBatItem标题外,一切都很顺利。我已经正确初始化了所有内容,但当应用程序启动时,我看到的只是第一个选项卡标题。但如果我选择第二个tabbaritem或诸如此类,我可以看到他们的名字。我不知道这里出了什么问题。这是我的密码。如果我犯了什么错误,请告诉我 谢谢 - (BOOL)application:(UIApplication *)application didFinishLaunchi

我正在创建基于UTabbarController的应用程序。我以编程方式创建了该选项卡栏。除了我看不到tabBatItem标题外,一切都很顺利。我已经正确初始化了所有内容,但当应用程序启动时,我看到的只是第一个选项卡标题。但如果我选择第二个tabbaritem或诸如此类,我可以看到他们的名字。我不知道这里出了什么问题。这是我的密码。如果我犯了什么错误,请告诉我

谢谢

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

    HomeViewController *viewController1 = [[HomeViewController alloc] initWithNibName:@"HomeViewController" bundle:nil];
UINavigationController*navController1=[[UINavigationController alloc]initWithRootViewController:viewController1];
navController1.title=@"Home";
[viewController1 release];

TrainerTableViewController *viewController2 = [[TrainerTableViewController alloc] initWithNibName:@"TrainerTableViewController" bundle:nil];
UINavigationController*navController2=[[UINavigationController alloc]initWithRootViewController:viewController2];
navController1.title=@"Trainer";
[viewController2 release];

SettingsTableViewController *viewController8 = [[[SettingsTableViewController alloc] initWithNibName:@"SettingsTableViewController" bundle:nil] autorelease];
UINavigationController*navController8=[[[UINavigationController alloc]initWithRootViewController:viewController8]autorelease];
navController1.title=@"Settings";

AboutUsViewController *viewController9 = [[[AboutUsViewController alloc] initWithNibName:@"AboutUsViewController" bundle:nil] autorelease];
UINavigationController*navController9=[[[UINavigationController alloc]initWithRootViewController:viewController9]autorelease];
navController1.title=@"About Us";


self.tabBarController = [[[UITabBarController alloc] init] autorelease];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:navController1, navController2,navController8, navController9, nil];

[navController1 release];
[navController2 release];
self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];
return YES;
}

可以通过在视图控制器的.m文件中为每个选项卡栏项包含下面的代码来完成此操作。代码还包括如何更改选项卡栏上的图像

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization.
        self.title = @"Apply Now";
        self.tabBarItem.image = [UIImage imageNamed:@"tbApplyNow.png"];
    }
    return self;
}

可以通过在视图控制器的.m文件中为每个选项卡栏项包含下面的代码来完成此操作。代码还包括如何更改选项卡栏上的图像

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization.
        self.title = @"Apply Now";
        self.tabBarItem.image = [UIImage imageNamed:@"tbApplyNow.png"];
    }
    return self;
}

您只是在为navController1设置标题。对于您创建的每个nab控制器,您需要设置该控制器的标题

试试这个:

更改: 导航控制器1.标题=@“培训师”; 到 导航控制器2.标题=@“培训师”

更改: navController1.title=@“设置”; 到 navController8.title=@“设置”

更改: navController1.title=@“关于我们”; 到 导航控制器9.title=@“关于我们”


此外,您没有释放navController8或9,这将导致内存泄漏

您只是在设置navController1的标题。对于您创建的每个nab控制器,您需要设置该控制器的标题

试试这个:

更改: 导航控制器1.标题=@“培训师”; 到 导航控制器2.标题=@“培训师”

更改: navController1.title=@“设置”; 到 navController8.title=@“设置”

更改: navController1.title=@“关于我们”; 到 导航控制器9.title=@“关于我们”


另外,您没有释放navController8或9,这将导致内存泄漏

您实际上是在为NavigationController设置标题。另外,注意您的代码多次设置navController1的标题,而不是为其他代码设置标题

通过为每个控制器设置
tabBarItem
s,可以设置选项卡栏的标题

您可以选择子类化,或者只是将其包含在AppDelegate中的
应用程序:didFinishLaunchingWithOptions:
方法中

下面是一个例子:

UITabBarItem *tbi1 = [navController1 tabBarItem];
[tbi1 setTitle:@"Home"];

UIImage *i1 = [UIImage imageNamed:@"hometabicon.png"];
[tbi1 setImage:i1];
这将把tab1的标题设置为“Home”,并将tabBar图标设置为名为“hometabicon.png”的文件


您可以为其他每个选项卡重复相同的模式。

您实际上是在为NavigationController设置标题。另外,注意您的代码多次设置navController1的标题,而不是为其他代码设置标题

通过为每个控制器设置
tabBarItem
s,可以设置选项卡栏的标题

您可以选择子类化,或者只是将其包含在AppDelegate中的
应用程序:didFinishLaunchingWithOptions:
方法中

下面是一个例子:

UITabBarItem *tbi1 = [navController1 tabBarItem];
[tbi1 setTitle:@"Home"];

UIImage *i1 = [UIImage imageNamed:@"hometabicon.png"];
[tbi1 setImage:i1];
这将把tab1的标题设置为“Home”,并将tabBar图标设置为名为“hometabicon.png”的文件


您可以为其他每个选项卡重复相同的模式。

解决此问题的最佳方法是设置viewController而不是navigationController的标题

viewController1.tabBarItem.title = @"CohesiveSelf";

对所有选项卡执行此操作。

解决此问题的最佳方法是设置viewController而不是navigationController的标题

viewController1.tabBarItem.title = @"CohesiveSelf";

对所有选项卡执行此操作。

谢谢@Louie!!你救了我一天+答案是1。但我有一个问题:为什么它只与initWithNibName一起工作而不与viewDidLoad一起工作?谢谢@Louie!!你救了我一天+答案是1。但我有一个问题:为什么它只使用initWithNibName而不使用viewDidLoad?