2012-01-14 72 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