【问题标题】:How to add button to navigation bar如何将按钮添加到导航栏
【发布时间】:2014-05-28 12:19:21
【问题描述】:

在第一个 nib viewController 上的导航栏上添加一个按钮,并希望仅在主屏幕上而不是在任何其他屏幕上查看此按钮 我已经解决了 我制作了按钮并添加到导航栏的子视图 在我放置的每个按钮操作上

- (IBAction)forth:(id)sender {
    forthView *forthview = [[forthView alloc]init];
    [self.navigationController pushViewController:forthview animated:YES];
    btn.hidden = YES;
}

当我回到主屏幕时,此按钮隐藏但未显示 我的 viewdidload 代码在这里

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.

    self.title = @"My First View";

    self.navigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent;
    btn = [[UIButton alloc] init];

    btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    btn.frame = CGRectMake(10, 10, 65, 30);
    [btn setTitle:@"Show" forState:UIControlStateNormal];
    [self.navigationController.navigationBar addSubview:btn];

    btn.hidden = false;

}

【问题讨论】:

    标签: ios uinavigationcontroller


    【解决方案1】:

    隐藏按钮后,您需要再次取消隐藏。这是取消隐藏按钮的简单代码:

    btn.hidden = No
    

    【讨论】:

      【解决方案2】:

      viewDidLoad仅在第一次加载视图时调用。如果您想测试它何时被调用,请添加 NSLog()statement。每次您的视图出现在屏幕上时,viewWillAppear都会被调用。
      所以你需要在viewWillAppear中显示按钮

      【讨论】:

        【解决方案3】:

        您真正想要做的似乎是在主视图控制器的navigationItem.leftBarButtonItem 属性中添加UIBarButtonItem。这样,按钮将具有正确的外观,并在显示视图控制器时显示和隐藏。

        self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Show"
                                                                                 style:UIBarButtonItemStyleBordered
                                                                                target:self
                                                                                action:@selector(onShowButtonPressed:)];
        

        【讨论】: