Iphoneの開発で質問です。


@interfaceで

IBOutlet UIImageView* test;

とかいておくと
Interface BuilderでOutletにtestが表示されますが

IBOutlet UIImageView* test[3];
とかくと
Interface BuilderでOutletに表示がされません。
この場合配列を用いることはできないのでしょうか。何か方法があるのでしょうか。

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/11/05 13:56:21
  • 終了:2010/11/09 12:58:12

ベストアンサー

id:australiagc No.1

australiagc回答回数467ベストアンサー獲得回数902010/11/05 15:05:40

ポイント60pt

そもそもNSObject系のオブジェクトって配列に入れられましたっけ?

それに、UIImageView*を配列として定義するのもできないような・・・。

この場合、NSArrayかNSMutableArrayを使って、objectAtIndexで読んでくるのが通例だと思います。

IBOutlet UIImageView *test3;

NSMutableArray *test;

...

*test3 = (UIImageView*)[test objectAtIndex:3];

...

id:DOISHIGERU

ご回答ありがとうございます。

50個くらいのImageViewを表示させたり消したりしています。今は一度

IBOutlet UIImageView *test1;

IBOutlet UIImageView *test2;

UIImageView* test[2];

としておいて

test[0] = test1

test[1] = test2

と置いています。これが50個続くとさすがにもっと効率の良いやり方があるような気がしたので上記質問を致しました。

2010/11/05 15:16:25
  • id:australiagc
    なるほど、そういうことだったんですね。
    ちなみに普通の配列も使えたのは知りませんでした。
    逆に勉強になってしまいました。

    IBOutlet自体はIBの各オブジェクト毎に定義しなくてはいけないので、当然ながら配列を渡せば一括で表示できる、とはいきません。
    もしIBを使わずにインターフェイスを作成するのであれば、ループでUIImageViewを追加していくという事ができますが。

    for (UIImageView *test in tests) {
    [self.view addSubview:test];
    }

    で、testsに関してですが、この50個の画像は毎回同じもの、もしくは法則性のあるものなのでしょうか?
    もしそうであれば、一度plistに画像のファイルパス一覧を保存して、次回起動時からはplistから読み込んだファイルパスを元にUIImageViewをループで自動生成すれば良いかと。
  • id:DOISHIGERU
    御回答ありがとうございます。画像は毎回同じです。なるほど、IBを使わない方法があるのですね。IBを使わない方法で検討してみたいと思います。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません