设计具有多个xib的视图控制器

时间:2012-01-14 18:41:46

标签: iphone ios uikit

在视图控制器中使用多个xib进行响应式设计是最佳做法吗?

我目前正在实施的应用程序在很大程度上依赖于远程API来获取数据。一个特定的视图令人不安,因为布局取决于从该API返回的数据。它既可以是具有完整评论和定价的产品,也可以是我们仅提供有限信息的产品。

设计响应数据。根据返回的信息量,视图的布局与另一个布局大不相同。此外,还有很多元素需要重新定位,具体取决于文本长度等。我最初在代码中实现了几乎所有的设计,但是这很快变得无法维护,所以我几乎将所有元素卸载到xib并且仅使用代码重新定位元素。

使用多个xib可能是一个很好的解决方案。加载视图时,控制器执行API请求,然后在需要时加载新的xib。我不确定这种方法可能会有什么缺点。

1 个答案:

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