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中使用StackView View从XIB自我调整自定义视图