1

したがって、長い試行錯誤の後、私のアプリのユーザーは、最初のルート Viewcontroller1 から行を選択できるようになりました。彼がこれを行うと、2 番目の Viewcontroller2 が開き、画面上の最初の Viewcontroller2 が置き換えられます。ここまでたどり着いたのは素晴らしいことです。これには NavigationController を使用しました。

ユーザーが行を選択すると、2番目のViewcontroller2に選択に関する詳細が表示されます。たとえば、牛を選択すると、牛の写真と説明が表示されます。馬を選択すると、同じセットアップですが、別の写真と説明があります。

動物ごとに別のビューコントローラーを作成することは、悪い習慣のようです。これを解決するにはどうすればよいですか?ビューの使用について何か聞いたことがありますか?

複数の行があるため、いくつかの配列などを追加する必要があることはわかっていますが、これは自分で解決します。

これを読んでくれてありがとう。

4

2 に答える 2

1

動物ごとに異なるビューを作成するのは悪い習慣であるというあなたの意見は正しいです。一般的なアプローチは、動物に関する情報と説明を備えたモデルを用意することです。ユーザーが選択した動物に応じてビューが更新されます。そのプロセスはコントローラーによって処理されます。これはmodel-view-controllerと呼ばれます。動物の詳細については 1 つのレイアウトを使用しますが、コントローラがモデルを使用してラベルを更新することで、選択された動物に応じて異なる画像と説明を表示するという考え方です。

Apple は、Developer Library で Table Views を使用してデータをナビゲートする方法について説明しています。SimpleDrillDown サンプル コードも参照することをお勧めします。

于 2013-06-05T23:54:00.473 に答える
1

あなたは理解の端にいます

ユーザーが行を選択すると、2番目のViewcontroller2に選択に関する詳細が表示されます。

Ok。良い。2 番目のビュー コントローラーが必要であり、詳細の表示を担当する必要があることを確認しました。

たとえば、牛を選択すると、牛の写真と説明が表示されます。馬を選択すると、同じセットアップですが、別の写真と説明があります。

優秀な。それぞれが同じ設定になっていることがわかります。また、別のビュー コントローラーでこの作業を何度も繰り返すのはばかげていることにも気付きます。

動物に関する情報を別々に保持し、同様の方法で構造化する必要があります。これをモデルと呼びます。たとえば、名前プロパティと画像プロパティを持つ動物クラスを作成できます。

@interface Animal : NSObject
@property (nonatomic, copy) NSString * name;
@property (nonatimic, strong) UIImage * picture;
@end

次に、動物を表示するには、モデル (同様に構造化されたデータ) から情報を取得し、そのビューに情報を入力する方法を認識しているビュー コントローラーを作成する必要があります。

この例を使用すると、View Controller にこのコードが表示される場合があります。

-(void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];

    ...

    Animal * animalToDisplay = ... 
    self.imageView.image = animalToDisplay.picture;
    self.nameLabel.text = animalToDisplay.name;

オブジェクトは、おそらく動物に対応するセルまたはボタンをタップしたときに、そのanimalToDisplay前のコントローラーによってこの2番目のコントローラーに提供されます。このView Controllerは、任意のAnimalオブジェクトからのデータを表示できます。

于 2013-06-05T23:54:45.300 に答える