用多个xibdevise一个视图控制器

在视图控制器中使用多个xib来实现响应式devise是否是最佳做法?

我目前正在实施一个应用程序,严重依赖于其数据的远程API。 一个特定的视图是麻烦的,因为布局取决于从该API返回的数据。 它既可以是具有完整评论和定价的产品,也可以是我们仅具有有限信息的产品。

devise对数据有响应。 根据返回多less信息,视图的布局与另一个大不相同。 另外,还有一些需要根据文本长度来重新定位的元素。我原本在代码中几乎全部实现了这个devise,但是这样做很快就无法维护,所以我把它几乎全部卸载到xib中,只使用代码重新定位元素。

使用多个xib可能是一个好的解决scheme。 当视图加载时,控制器执行API请求,然后根据需要加载新的xib。 我不确定这种方法可能有什么不利之处。

我现在正在实施客户端 – 服务器应用程序。 大部分视图的布局也取决于来自API的数据。 在像你这样的情况下,我创build了几个xib文件(一个用于详细的产品,一个用于限制等),根据服务器响应,我selectxib加载。 代码示例:

// 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中的索引: