Iphone 当UINavigationBar中看不到uibarbuttonite时,该怎么办?

Iphone 当UINavigationBar中看不到uibarbuttonite时,该怎么办?,iphone,uinavigationcontroller,uibarbuttonitem,Iphone,Uinavigationcontroller,Uibarbuttonitem,大家好 我正在ViewDidLoad中编写一个简单的代码,类是UITableViewController的子类,如下所示,但按钮不可见,而标题可见 另一件事,我正在点击ViewDidLoad方法ViewController.m中的一个按钮,它是调用一个方法,该方法的代码如下所示 //Code of button target method -(void)statusMethod { NSLog(@"statusMethod"); Status *ob=[[Status allo

大家好 我正在ViewDidLoad中编写一个简单的代码,类是UITableViewController的子类,如下所示,但按钮不可见,而标题可见

另一件事,我正在点击ViewDidLoad方法ViewController.m中的一个按钮,它是调用一个方法,该方法的代码如下所示

//Code of button target method

-(void)statusMethod {
    NSLog(@"statusMethod");
    Status *ob=[[Status alloc]init];
    [self presentModalViewController:ob animated:YES];

}

//Code of ViewDidLoad of Status.m
UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, width, 43)];
    navBar.autoresizingMask = UIViewAutoresizingFlexibleWidth;
    [self.view addSubview:navBar];
    [navBar release];

UIBarButtonItem *home = [[UIBarButtonItem alloc] initWithTitle:@"HOME" style:UIBarButtonItemStylePlain target:self action:@selector(homeMethod)];
self.navigationItem.rightBarButtonItem = home;

UIBarButtonItem *add = [[UIBarButtonItem alloc] initWithTitle:@"Add" style:UIBarButtonSystemItemAdd target:self action:@selector(addMethod)]; 
self.navigationItem.leftBarButtonItem = add;


UILabel *label = [[UILabel alloc] initWithFrame:
                  CGRectMake(10,10,width-20,25)];
label.autoresizingMask = UIViewAutoresizingFlexibleWidth;
label.text = @"Status";
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont systemFontOfSize:25];
label.textAlignment = UITextAlignmentCenter;
[navBar addSubview:label];
[label release];
你知道代码中有什么问题吗? 如果你不明白,你可以再问我一次,
如果我能找到问题的解决方案,我会赞许的。

这看起来像是
self。导航项
只由UINavigationController(controller,而不是bar)查看。酒吧本身是不会检查的

所以你要么

1) 使用一个真正的UINavigationController,它带有自己的导航栏,可以为您处理导航项。在这种情况下,上面的self.navigationItem代码将起作用。(应该考虑<代码> Self.NavigalItEM.TeTe= @“状态”;)

如果您的UITableViewController将在导航堆栈上下推送内容,则在任何情况下都应采用此路径

2) 使用UINavigationBar自己的导航项。但它似乎没有导航项,因此您必须添加自己的:

UINavigationItem *navItem = [[UINavigationItem alloc] initWithTitle:@"Status"];

[navBar setItems:[NSArray arrayWithObject:navItem]];
[navItem release];
然后将左右按钮设置为

[navBar topItem].leftBarButtonItem = add;
[add release];

[navBar topItem].rightBarButtonItem = home;
[home release];

处理UINavigationController/UINavigationBar/UINavigationItem可能会让人困惑,但幸运的是,苹果在其顶部有一个很好的解释,说明了所有这些东西是如何协同工作的。

看起来像是
self.navigationItem
只由UINavigationController(controller,而不是bar)查看。酒吧本身是不会检查的

所以你要么

1) 使用一个真正的UINavigationController,它带有自己的导航栏,可以为您处理导航项。在这种情况下,上面的self.navigationItem代码将起作用。(应该考虑<代码> Self.NavigalItEM.TeTe= @“状态”;)

如果您的UITableViewController将在导航堆栈上下推送内容,则在任何情况下都应采用此路径

2) 使用UINavigationBar自己的导航项。但它似乎没有导航项,因此您必须添加自己的:

UINavigationItem *navItem = [[UINavigationItem alloc] initWithTitle:@"Status"];

[navBar setItems:[NSArray arrayWithObject:navItem]];
[navItem release];
然后将左右按钮设置为

[navBar topItem].leftBarButtonItem = add;
[add release];

[navBar topItem].rightBarButtonItem = home;
[home release];

处理UINavigationController/UINavigationBar/UINavigationItem可能会令人困惑,但幸运的是,苹果在其顶部有一个很好的解释,说明了所有这些东西是如何协同工作的。

你是使用导航控制器来推这个视图还是以模态视图的形式显示?@Benwong我正在制作一个简单的导航栏,只是在其左右两侧添加按钮,但没有效果,但是标签在导航栏上没有问题。你是使用导航控制器还是显示为模式视图?Benwong我正在制作简单的导航栏,只是在其左右两侧添加按钮,但没有效果,但标签在导航栏上没有问题