UINavigationBar右键没有显示出来

dia*_*olo 5 cocoa-touch uinavigationbar uikit uinavigationcontroller ios

我通过通知使用以下功能在我的UINavigationBar上加载一个右键,即使我可以找出按钮并验证它已分配,但它没有显示......任何想法?

编辑2011年4月6日,下午2:42

所以,有趣的东西......宽度总是报告为0.0 ...

- (void)showRightBarButton:(id)sender
{
    NSLog(@"Showing button");
    UIBarButtonItem *button = [[UIBarButtonItem alloc]
                               initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
                               target:self
                               action:@selector(showPI:)];
    [button setTitle:@"This Button"];
    self.navigationItem.rightBarButtonItem = button;
    //[[self.navigationItem rightBarButtonItem] setWidth:50];
    NSLog(@"Button width is %f.", self.navigationItem.rightBarButtonItem.width);
    [button release];
}
Run Code Online (Sandbox Code Playgroud)

Eri*_*k B 5

[self.view setNeedsDisplay];
Run Code Online (Sandbox Code Playgroud)

你说得对。不需要那条线。就代码的其余部分而言,我不明白它有什么问题。到目前为止,我唯一想到的是 self 不是当前显示的视图控制器,或者您缺少导航控制器。也许您自己创建了自己的UINavigationBar导航控制器而不是使用导航控制器?

无论如何,为了更轻松地调试,我建议如下:

- (void)showRightBarButton:(id)sender
{
    NSLog(@"Showing button");
    UIBarButtonItem *button = [[UIBarButtonItem alloc]
                             initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
                                                  target:self
                                                  action:@selector(showPI:)];
    self.navigationItem.rightBarButtonItem = button;
    [button release];
}
Run Code Online (Sandbox Code Playgroud)

编辑:宽度并不有趣。除非您自己指定,否则它始终为 0.0。

问题是您将按钮添加到了错误的位置。您不应该将按钮添加到导航控制器的导航项,而是添加到导航控制器当前显示的控制器的导航项。