【问题标题】:What to do when UIBarButtonItem are not visible in UINavigationBar?UINavigationBar中看不到UIBarButtonItem怎么办?
【发布时间】:2011-06-21 08:13:24
【问题描述】:

大家好 我正在 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];

任何想法,代码中的问题是什么? 不懂的可以再问我 如果我能解决我的问题,我会表扬

【问题讨论】:

  • 您是使用导航控制器推送此视图还是显示为模态视图?
  • @Benwong 我正在制作简单的导航栏,只是在其左右添加按钮,但没有效果,但导航栏上的标签可以

标签: iphone uinavigationcontroller uibarbuttonitem


【解决方案1】:

似乎self.navigationItem 仅由 UINavigationController(控制器,而不是栏)查看。酒吧本身不会检查这一点。

所以你应该要么

1) 使用真正的 UINavigationController,它带有自己的导航栏,并会为您处理导航项。上面的 self.navigationItem 代码将在这种情况下工作。 (你应该考虑self.navigationItem.title = @"Status";

如果您的 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 可能会令人困惑,但幸运的是,Apple 在其 UINavigationController documentation 的顶部对所有这些东西如何协同工作进行了很好的解释。

【讨论】:

    猜你喜欢
    • 2012-09-28
    • 1970-01-01
    • 1970-01-01
    • 2016-08-27
    • 2015-12-01
    • 1970-01-01
    • 2020-07-08
    • 2014-09-10
    • 2012-06-14
    相关资源
    最近更新 更多