みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

objectiv-cで困っています。教えてください

objectiv-cの勉強を始めてばかりです。いろいろ調べながら、カメラロールから画像を選択して、表示させようとしてます。配列NSArrayに入っている
"<UIImage: 0x7fbbdae55b10>",
"<UIImage: 0x7fbbdaf68e00>",
"<UIImage: 0x7fbbdaf69430>",
"<UIImage: 0x7fbbdac79aa0>",
"<UIImage: 0x7fbbdae8d690>"
を一つずつ取り出してMain.storyboardに配置したIBOutlet UIImageView *imageView;に表示させようとしているのですが、表示できません。

UIImage *img = [[UIImage alloc] initWithImage:配列の番号];
imageView.image = img;

「initWithImage:配列の番号」のところがおかしいのでしょうか?0x7fbbdae8d690などの文字列はカメラロールの画像へのパスですか?
まだまだ初心者で質問もおかしいところがあるかも知れませんが、回答よろしくお願いします。

投稿日時 - 2015-02-11 09:35:59

QNo.8915260

すぐに回答ほしいです

質問者が選んだベストアンサー

> 「initWithImage:配列の番号」のところがおかしいのでしょうか?

この通り「配列の番号」と漢字で書いているのだったら
正しいわけありません。

実際にはなにか英数字でコーディングしているのだと
思いますが、その内容がどんなものかを説明しないと
それがおかしいかどうか分かるわけありません。

が、それ以前の部分もあきらかにおかしいので
その点を指摘しておきます。

まず、UIImageクラスにinitWithImageというメソッドはありません。
そもそもNSArrayの配列には既にUIImageオブジェクトが入っていますから、
それをimageView.imageに設定すればいいだけです。

例えば、画像が入っている配列を「NSArray *imageArray;」とし
表示したい画像の配列番号を「NSInteger imageNumber;」とするなら
imageView.image = imageArray[imageNumber];
とするだけでよいと思います。

あと、imageViewをプロパティで定義したのなら、
もしかするとimageViewじゃなくて_imageViewとする必要が
あるかもしれませんが、imageViewをどう定義しているのか
ちゃんと書いてないのではっきりわかりません。

状況の説明も「表示させようとしているのですが、表示できません」
と書いていますが、このコーディングだと、実行する以前に
ビルドエラーでエラー箇所が赤く表示されているはずです。
普通はそのメッセージ内容を見て何が悪いか考えます。
そのメッセージの意味がわからないなら、正確なメッセージ内容を
ちゃんと質問に記載して質問すべきです。
そして、コーディングもできるだけそのまま記載し、
記載できないところを補足すべきです。

> 0x7fbbdae8d690などの文字列はカメラロールの画像へのパスですか?
これは、画像へのパスじゃなくて、UIImageクラスオブジェクトの
アドレスです。意味もわからず質問に書いたのかもしれませんが、
これによって、配列にUIImageクラスのオブジェクトが入っている
ということがはっきりわかります。これがあったから
imageView.image = imageArray[imageNumber];
とするだけでよいというアドバイスになりました。

投稿日時 - 2015-02-11 13:17:07

お礼

分かりにくい質問で失礼しました。そんな質問にもきちんと回答をくださりありがとうございました。0x7fbbdae8d690などがUIImageクラスオブジェクトであることがわかり、ご指摘のように
imageView.image = imageArray[imageNumber];
imageViewのimageメソッドで配列の中身をセットすれば、画像が表示されました。ありがとうございました。また、よろしくお願いします。

投稿日時 - 2015-02-11 22:57:55

このQ&Aは役に立ちましたか?

6人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問