如何以编程方式添加UIBarButtonItem?

以编程方式添加UIBarButtonItem的正确方法是什么? 在我的情况下,我正在尝试将一个添加到rightBarButtonItem ,我一直在控制器层次结构中跳跃,但我似乎无法让按钮显示在任何地方。

这是我目前的代码:

 - (void)viewDidLoad { [super viewDidLoad]; [self.navigationItem setRightBarButtonItem:[[[UIBarButtonItem alloc] initWithImage:[[UIImage alloc] initWithContentsOfFile:@"Barcode-White.png"] style:UIBarButtonItemStylePlain target:self action:@selector(scanEquipment:)] autorelease]]; } 

我希望有人能引导我走向正确的方向。 我试图调用它的控制器是3级。所以, UITabBarController – > UIViewController (Settings, 1st level) – > UIViewController (Vehicle, 2nd level) – > UIViewController (Inventory, 3rd level)

无论如何,提前感谢任何帮助!

[[UIImage alloc] initWithContentsOfFile:@"Barcode-White.png"]可能无法正常工作。 initWithContentsOfFile获取图像文件的完整路径,而不仅仅是文件名。 这可能是问题所在; 它返回nil,这导致整个按钮构造函数返回nil。

(另外,您通过调用init方法而不释放或自动释放来泄漏此图像。)

尝试使用[UIImage imageNamed:@"Barcode-White"] ,它在应用程序的资源中查找图像文件,并且还有一个额外的好处,即只加载图像一次,然后将其缓存在内存中,无论它被调用多少次:

http://developer.apple.com/library/ios/documentation/uikit/reference/UIImage_Class/Reference/Reference.html#//apple_ref/occ/clm/UIImage/imageNamed :

除此之外,它看起来应该工作……

此外,导航栏项目的样式始终为UIBarButtonItemStyleBordered 。 尝试将其设置为UIBarButtonItemStylePlain将被系统忽略。 (但不应该是它不起作用的原因。)