在视图控制器中使用多个xib进行响应式设计是最佳做法吗?
我目前正在实施的应用程序在很大程度上依赖于远程API来获取数据。一个特定的视图令人不安,因为布局取决于从该API返回的数据。它既可以是具有完整评论和定价的产品,也可以是我们仅提供有限信息的产品。
设计响应数据。根据返回的信息量,视图的布局与另一个布局大不相同。此外,还有很多元素需要重新定位,具体取决于文本长度等。我最初在代码中实现了几乎所有的设计,但是这很快变得无法维护,所以我几乎将所有元素卸载到xib并且仅使用代码重新定位元素。
使用多个xib可能是一个很好的解决方案。加载视图时,控制器执行API请求,然后在需要时加载新的xib。我不确定这种方法可能会有什么缺点。
答案 0 :(得分: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可以将所有版本的视图放入一个xib中。在这种情况下,您只需更改nibViews objectAtIndex中的索引: