这段代码出了什么问题我无法创建简单的UIBarButtonItem?

时间:2013-01-15 07:19:47

标签: objective-c xcode4.5

UIImage * imageSetting= [UIImage imageNamed:@"setting-button"];
UIImageView * imageView = [[UIImageView alloc]initWithImage:imageSetting];
self.editSettings = [[UIBarButtonItem alloc]initWithCustomView:imageView];
PO(self.editSettings);

另外:

self.editSettings = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonItemStylePlain target:nil action:nil];
PO(self.editSettings);

在两种情况下,self.editSettings都返回null。

因此,PO(self.editSettings)返回null

2 个答案:

答案 0 :(得分:1)

你没有在问题中显示这一点,但这种行为可以解释为editSettings是弱属性。如果直接从初始化分配给弱属性,ARC将删除该对象,因为没有强大的指针指向它。

使用局部变量创建条形按钮项,然后确保在它超出范围之前将其添加到工具栏或导航栏,或将属性更改为strong。

答案 1 :(得分:1)

可能是因为这个吗?:

[UIImage imageNamed:@"settings-button"];

您(由于某种原因)未指定文件扩展名。 (.png最有可能)*。 如果文件“settings-button”不存在,则UIImage * imageSettings将为nil。

这将使initWithImage:失败(因为没有图像),最后initWithCustomView:nil也将返回nil ...

编辑: *正如马丁在下面说的那样,如果是png就不需要扩展,所以为了使我的答案正确,它必须是实际文件名中的拼写错误或者是.png之外的其他文件类型。