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

Iphone 设计具有多个xib的视图控制器,iphone,ios,uikit,Iphone,Ios,Uikit,对于响应性设计,在视图控制器中使用多个xib是否是最佳实践 我目前正在实现一个应用程序,它的数据严重依赖远程API。一个特定的视图很麻烦,因为布局依赖于从该API返回的数据。它要么是一个有全面审查和定价的产品,要么是一个我们只有有限信息的产品 该设计对数据做出响应。根据返回的信息量,视图的布局与其他视图大不相同。此外,还有相当多的元素需要根据文本长度重新定位,等等。我最初几乎都是用代码实现设计的,但很快就无法维护,所以我将几乎所有元素卸载到xib,只使用代码来重新定位元素 使用多个xib可能是一

对于响应性设计,在视图控制器中使用多个xib是否是最佳实践

我目前正在实现一个应用程序,它的数据严重依赖远程API。一个特定的视图很麻烦,因为布局依赖于从该API返回的数据。它要么是一个有全面审查和定价的产品,要么是一个我们只有有限信息的产品

该设计对数据做出响应。根据返回的信息量,视图的布局与其他视图大不相同。此外,还有相当多的元素需要根据文本长度重新定位,等等。我最初几乎都是用代码实现设计的,但很快就无法维护,所以我将几乎所有元素卸载到xib,只使用代码来重新定位元素


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

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

中的索引,而不是为同一控制器使用不同的XIB,您可以使用不同的UIView来实现您的功能如何显示视图?是否将productView分配给self.view?