2012-01-14 69 views
0

對於響應式設計,在視圖控制器中使用多個xib是否是最佳做法?使用多個xib設計視圖控制器

我目前正在實施一個應用程序,它嚴重依賴於其數據的遠程API。一個特定的視圖很麻煩,因爲佈局取決於從該API返回的數據。它既可以是具有完整評論和定價的產品,也可以是我們僅具有有限信息的產品。

該設計對數據有響應。根據返回的信息量多少,視圖的佈局與另一個有很大不同。另外,還有一些需要重新定位的元素取決於文本的長度等。我最初實現了幾乎所有的代碼設計,但這變得很快無法維護,所以我將它幾乎全部卸載到xib中,只使用代碼重新定位元素。

使用多個xib可能是一個很好的解決方案。當視圖加載時,控制器執行API請求,然後根據需要加載新的xib。我不確定這種方法可能存在哪些不足。

+1

您可以使用不同的UI視圖來實現您的功能,而不是爲同一個控制器設置不同的xib – Ali3n 2012-01-14 18:57:30

回答

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.. 

喲可以把所有版本的視圖放到一個xib中。在這種情況下,您只需更改nibViews objectAtIndex中的索引:

+0

您會如何呈現視圖?將productView分配給self.view? – James 2012-01-16 17:27:22

+0

不,將其添加爲子視圖 – 2012-01-17 22:08:44