iphone - 设计具有多个 xib 的 View Controller

标签 iphone ios uikit

在响应式设计的 View Controller 中使用多个 xib 是最佳实践吗?

我目前正在实现一个应用程序,该应用程序的数据严重依赖远程 API。一个特定的 View 令人不安,因为布局取决于从该 API 返回的数据。它要么是具有完整评论和定价的产品,要么是我们仅有有限信息的产品。

设计响应数据。根据返回的信息量, View 的布局与其他 View 有很大不同。此外,有很多元素需要根据文本长度等重新定位。我最初几乎全部用代码实现了设计,但很快就变得无法维护,所以我将几乎所有元素卸载到 xib 并只使用代码重新定位元素。

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

最佳答案

我现在正在实现客户端-服务器应用程序。大多数 View 的布局也取决于来自 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..

你可以把所有版本的 View 放到一个 xib 中。在那种情况下,您只需更改 nibViews objectAtIndex 中的索引:

关于iphone - 设计具有多个 xib 的 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8864445/

相关文章:

iphone - iOS 中分层应用程序的示例应用程序/教程

css - 滚动在移动设备 (iPhone) 上不起作用

ios - 在 iOS 11 中,取消模态呈现的导航 Controller 会导致视觉重复

iOS 8 boundingRectWithSize 计算错误的文本大小

ios - 如何为 iOS webView 添加地址栏

ios - UITableView 单元格标签在滚动时截断

ios - 通过传递数据。导航 Controller

iPhone 应用架构

iphone - 刷新 View

objective-c - 如何将 block 的结果模拟为方法参数?