2012-01-14 6 views
0

レスポンシブデザインでは、複数のxibをビューコントローラで使用することをお勧めしますか?複数のxibを持つビューコントローラの設計

私は現在、データ用にリモートAPIに大きく依存しているアプリケーションを実装しています。レイアウトはそのAPIから返されるデータに依存するため、特定のビューの1つは問題になります。これは、完全なレビューと価格設定を持つ製品、または情報が限られている製品のいずれかです。

デザインはデータに応答します。返される情報の量に応じて、ビューのレイアウトは他のものと大きく異なります。また、テキストの長さなどに応じて配置を変更する必要がある要素がかなりあります。私はもともとデザインをほぼすべてコードで実装していましたが、それはすぐに維持できなくなりましたので、ほとんどすべてをxibにオフロードし、要素を再配置する。

複数のxibを使用することは良い解決策かもしれません。ビューがロードされると、コントローラはAPIリクエストを実行し、必要に応じて新しいxibをロードします。私は、このアプローチには何が欠点かもしれないのか分からない。

+1

同じコントローラに対して異なるxibsを使用する代わりに、異なるUIビューを使用して機能を実装することができます – Ali3n

答えて

2

私は今クライアント/サーバーアプリを実装しています。ほとんどのビューのレイアウトはAPIのデータにも依存します。あなたのような状況では、いくつかのxibファイルを作成しました(詳細製品用、制限付き用など)。サーバーの応答に応じて、ロードするxibを選択しています。コードサンプル:

// load proper view from nib 
    NSArray *nibViews; 
    if(product.details) { 
     nibViews = [[NSBundle mainBundle] loadNibNamed:@"DetailedView" owner:self options:nil]; 
    } 
    else { 
     nibViews = [[NSBundle mainBundle] loadNibNamed:@"NormalView" owner:self options:nil]; 
    } 

    // create and initialize product view object 
    ProductView *productView = [nibViews objectAtIndex:0]; 

    // configure a view here.. 

Yoは、すべてのバージョンのビューを1つのxibに入れることができます。その場合、nibViews objectAtIndexのインデックスのみを変更します:

+0

ビューをどのように表示しますか? self.viewにproductViewを割り当てますか? – James

+0

いいえ、サブビューとして追加してください –

関連する問題