【问题标题】:Designing a view controller with multiple xibs设计具有多个 xib 的视图控制器
【发布时间】:2012-01-14 18:41:45
【问题描述】:

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

我目前正在实现一个严重依赖远程 API 来获取数据的应用。一个特定的视图令人不安,因为布局取决于从该 API 返回的数据。它要么是经过全面审查和定价的产品,要么是我们只有有限信息的产品。

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

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

【问题讨论】:

  • 您可以使用不同的 UIview 来实现您的功能,而不是为同一个控制器使用不同的 xibs

标签: iphone ios uikit


【解决方案1】:

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

【讨论】:

  • 您将如何呈现视图?将 productView 分配给 self.view?
猜你喜欢
  • 2023-03-13
  • 2014-09-03
  • 2014-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-23
  • 2012-07-17
  • 2011-09-22
相关资源
最近更新 更多