我有一个UITableViewController
带有部分的子类。这些部分以默认样式显示(无圆角)。如何在代码中将TableView样式设置为分组?我没有为此使用Interface Builder,所以我需要类似
[self.tableView setGroupedStyle]
我搜索了Stack Overflow,但找不到答案。
Answers:
如果我理解您的意思,则必须使用该样式初始化控制器。就像是:
myTVContoller = [[UITableViewController alloc] initWithStyle:UITableViewStyleGrouped];
您可以执行以下操作:
UITableView *myTable = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];
斯威夫特3:
let tableView = UITableView.init(frame: CGRect.zero, style: .grouped)
UITableView
,被接受的答案是一个UITableViewController
。
CGRectZero
tableview样式进行初始化,然后添加约束,即可获得正确的样式以及约束。
我给你我的解决方案,我正在“ XIB模式”下工作,这里是UITableViewController的子类的代码:
-(id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithStyle:UITableViewStyleGrouped];
return self;
}
下面的代码对我有用,我也在使用UITableview类
- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:UITableViewStyleGrouped];
if (self)
{
}
return self;
}
如果要在已经在单独的swift文件中创建的子类上使用它,也可以执行此操作(可能不是100%正确,但可以使用)
override init(style: UITableViewStyle) {
super.init(style: style)
UITableViewStyle.Grouped
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
现在在appdelegate.swift中,您可以调用:
let settingsController = SettingsViewController(style: .Grouped)
如果您拥有一个用于更多表的TableView,并且其中一个表被分组而另一个表被分组,则可以使用UITableViewDelegate中的函数来模拟普通样式:
override func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return CGFloat.min
}
迅捷4
如果您不想使用情节提要,这可能会有所帮助。
您可以在闭包中添加表视图并设置属性:
lazy var tableView: UITableView = {
let tableView = UITableView(frame: .zero, style: .grouped)
tableView.backgroundColor = UIColor(named: Palette.secondaryLight.rawValue)
tableView.rowHeight = 68
tableView.separatorStyle = .none
tableView.translatesAutoresizingMaskIntoConstraints = false
return tableView
}()
然后添加子视图并设置约束。
您还可以尝试使分隔线的颜色清晰可见,以产生分组样式效果:
[myTVContoller.tableView setSeparatorColor:[UIColor clearColor]];
您可以使用:
(instancetype)init {
return [[YourSubclassOfTableView alloc] initWithStyle:UITableViewStyleGrouped];
}
self.tableView.style = UITableViewStyleGrouped
编辑:
假设这是一个读/写属性。在这种情况下,您可以遵循Dimitris的建议并在实例化控制器时设置样式,或者(如果使用的是XIB)则可以通过IB进行设置。