-1
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

4

2 回答 2

1

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

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

于 2013-01-15T07:42:10.167 回答
1

会不会是因为这个?:

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

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

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

编辑: *正如 Martin 在下面所说的,如果它是 png,则扩展名不是必需的,所以我的回答是正确的,它必须是实际文件名中的拼写错误,或者是 .png 以外的其他文件类型。

于 2013-01-15T07:42:28.693 回答