2011-08-16 14 views
0

基本的には、少なくとも1つの画像を表示するカスタムビュー(延長UIView)を作成しました。下の画像はプレースホルダであり、その画像を削除することができるので、プレースホルダが再度表示されるように上部の画像を削除するだけです。プレースホルダの上にイメージを配置するためのメッセージを作成しました。最後のサブビューを削除して解放し、プレースホルダを表示するメッセージを追加しました。このメッセージの進行中に[self addSubview: nil]が呼び出されます。nilをサブビューとして追加するのは悪い考えですか?

私の質問は以下のとおりです。

  • addSubview: nil UBを引き起こすのでしょうか?それは悪い考えですか?
  • nilをサブビューとして追加した後、サブビュー配列に追加されますか、無視されますか?
+0

は、あなたが '尋ねる前に自分自身をnil'追加しようとしたことがありますか? 'UIView'ヘッダファイルのサブビューキャッシュは' NSMutableArray'なので、私はテストしませんでしたが、 'nil'を追加するために無効な引数例外が発生する可能性があります。 – PeyloW

+0

@PeyloWこの質問を投稿した後、私は開いていたプロジェクトでこれを試しました。私はまずメインビューコントローラに 'nil 'を追加しようとしました。実行時にSIGABRTが発生しましたが、私はそれが自分のコードであると推測しています。メインウィンドウに 'nil'をサブビューとして追加すると、エラーは発生しませんでしたが、サブビュー配列にはありませんでした。私はこれが答えの一種だと思いますが、これが問題を引き起こすかどうかはまだ分かりません。 –

+0

@PeyloW事後的には、投稿する前にそれを済ませていたはずです。いいですよ。 –

答えて

4

プレースホルダイメージと元のイメージを表示するために2つのイメージビューを追加することは本当に良い考えですか?

なぜプレースホルダと元の画像を表示するために2つの画像ビューを別々にしたいのですか?元の画像が利用できない場合は、1つの画像ビューのみを表示し、プレースホルダ画像を表示できます。

- (void)setMainImage:(UIImage *)mainImage { 

    if (mainImage) self.mainImageView.image = mainImage; 
    else self.mainImageView.image = thePlaceholderImage; 
} 

あなたがメインの画像を削除したい場合は、単に呼び出す

[self setMainImage:nil]; 
+0

元々、私はそれがより簡単だろうと思っていましたが、今はすべての問題に行くのはかなりばかげているようです。私はあなたが私に1つのサブビューを追加するように確信していると思います。良いショー! –

関連する問題