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
答案 0 :(得分:1)
你没有在问题中显示这一点,但这种行为可以解释为editSettings
是弱属性。如果直接从初始化分配给弱属性,ARC将删除该对象,因为没有强大的指针指向它。
使用局部变量创建条形按钮项,然后确保在它超出范围之前将其添加到工具栏或导航栏,或将属性更改为strong。
答案 1 :(得分:1)
可能是因为这个吗?:
[UIImage imageNamed:@"settings-button"];
您(由于某种原因)未指定文件扩展名。 (.png最有可能)*。 如果文件“settings-button”不存在,则UIImage * imageSettings将为nil。
这将使initWithImage:失败(因为没有图像),最后initWithCustomView:nil也将返回nil ...
编辑: *正如马丁在下面说的那样,如果是png就不需要扩展,所以为了使我的答案正确,它必须是实际文件名中的拼写错误或者是.png之外的其他文件类型。