0

UIImageView の iamge を変更しようとしています。そのために、viewWithTag を使用して UIImageView を取得しています。「-[UIView setImage:]: 認識されないセレクターがインスタンス 0x9161390 に送信されました」というメッセージでクラッシュします。

オブジェクトをキャストする必要があることはわかっていますが、すでにそれを行っています:

UIImageView *iv = (UIImageView *)[self.view viewWithTag:[[data objectForKey:@"tag"] intValue]];

[iv performSelectorOnMainThread:@selector(setImage:) withObject:img waitUntilDone:YES];

(バックグラウンドスレッドであるため、私は performSelectorOnMainThread を使用していますが、すでに「iv.image = ...」を試しています)。

同じエラーが発生します。

誰でも私が欠けているものを見ることができますか?

ありがとう!

編集:

(本当に速い!) 答えてくれてありがとう。私はそれを修正することができます。

私は使用していました:

[self.view viewWithTag:[[data objectForKey:@"tag"] intValue]]

しかし、UIImageViewはメインビューではなくScrollViewにあったため、次を使用します。

[scroll viewWithTag:[[data objectForKey:@"tag"] intValue]]

代わりに、修正してください。

(実際に画像を設定することはできませんが、クラッシュすることはありません)。

再度、感謝します!

4

2 に答える 2

1

最初に、取得する値がタイプ UIImageView クラスであることを確認する必要があります。データ ディクショナリまたは配列から値を取得する際に問題が発生する可能性があります。それが tableView または ScrollView のサブビューにある可能性がある場合は、self.view の代わりに取得する必要があります。違うかもしれません。したがって、ブレークポイントを使用してコードをデバッグする必要があります。このことが書き込みに行くsetImage場合は、渡しているメソッドの引数を確認してください。あなたの方法を詳しく説明してください。そうすれば簡単に答えることができます。

ここでは、 で 2 つの引数を渡していますsetImage

これはあなたを助けるかもしれません。

于 2013-01-08T20:48:17.340 に答える
0

タグではないデータから「キーの値」を要求している可能性があります。このような多くの不思議な問題が発生する可能性があるため、キーにオブジェクト値を使用しないことをお勧めします。

これは、他の人があなたのコメントに投稿したものと一致します。あなたが投稿したコードは非常に曖昧であり、objectForKey何を表示せずに使用しているためdata、問題が何であるかを推測するゲームです。

于 2013-01-08T20:41:07.687 に答える