iOS Table View XIB 布局问题

Posted

技术标签:

【中文标题】iOS Table View XIB 布局问题【英文标题】:iOS Table View XIB layout issue 【发布时间】:2015-05-04 14:16:54 【问题描述】:

我已经在 Xcode XIB 接口生成器中声明了 x3 UITableView

然后我在 iPad Air iOS 模拟器中运行了当前的UIViewController

如您所见,第一个 UITableView 视图的顶部单元格与第二个/第三个不同。

为什么会这样?

如何让这些UITableView'看起来一样?

【问题讨论】:

您是否将 tableviews 的数据源设置为 viewcontroller?你实现了 numberofrows 和 cellforrowatindexpath 方法吗? 不。它只是界面构建器。尚未连接数据源 好的。我可以重现这种行为。对我来说看起来一样!但是一旦你实现了所需的数据源/委托方法,你应该没问题! 【参考方案1】:

好的,我明白了。重写 init 方法,如下所示:

- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) 
        self.automaticallyAdjustsScrollViewInsets = NO;
    
    return self;

您必须自己处理插入,因为此自动属性只能处理层次结构中 first 子视图的插入。

【讨论】:

我可以在XIB界面生成器中提供这个选项吗? 仅在使用情节提要时。 然而,这个选项让我所有的视图控制器都像第二个和第三个一样(忽略导航栏)。是否有可能每个表格视图都像第一个一样?【参考方案2】:

为插入问题创建这些属性:

@property (weak, nonatomic) IBOutlet UITableView *tableViewLeft;
@property (weak, nonatomic) IBOutlet UITableView *tableViewMiddle;
@property (weak, nonatomic) IBOutlet UITableView *tableViewRight;

然后尝试以下操作:

- (void)viewDidLayoutSubviews 
    UIEdgeInsets inset = UIEdgeInsetsMake(self.topLayoutGuide.length, 0.0, 0.0, 0.0);
    self.tableViewLeft.contentInset = inset;
    self.tableViewMiddle.contentInset = inset;
    self.tableViewRight.contentInset = inset;

【讨论】:

您的两个答案对我来说都是正确的,即使我只能标记其中一个。谢谢!

以上是关于iOS Table View XIB 布局问题的主要内容,如果未能解决你的问题,请参考以下文章

无法摆脱 xib 文件中的 Group Table View Background Color deprecated 警告

从 Table View Cell xib 与披露指示符转至情节提要

iOS--控制器加载自定义view的xib

如何:在iOS中使用StackView View从XIB自我调整自定义视图

使用 UIView xib 作为 Table View Cell

iOS xib View宽高不能改变