-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 はそのオブジェクトへの強いポインタを持たないため、オブジェクトを削除します。

ローカル変数を使用してバー ボタン項目を作成し、範囲外になる前にそれをツールバーまたはナビゲーション バーに追加するか、プロパティを strong に変更してください。

于 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 に答える