我怎样才能设置一个UITableView分组的风格

我有一个UITableViewController子类的部分。 部分显示为默认样式(不带圆angular)。 我怎样才能设置TableView风格分组的代码? 我没有使用Interface Builder,所以我需要类似的东西

 [self.tableView setGroupedStyle] 

我search堆栈溢出,但不能拿出一个答案。

如果我明白你的意思,你必须用这种风格初始化你的控制器。 就像是:

 myTVContoller = [[UITableViewController alloc] initWithStyle:UITableViewStyleGrouped]; 

您可以执行以下操作:

 UITableView *myTable = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped]; 

Swift 3:

 let tableView = UITableView.init(frame: CGRect.zero, style: .grouped) 

我给你我的解决scheme,我在“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; } 

对于ui本身设置分组风格: – selectTableView,然后将“样式”(在属性检查器))从普通更改为分组。

你也可以这样做,如果你想使用它已经在一个单独的SWIFT文件中创build的子类(可能不是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) 

如果你inheritance了UITableViewController,你可以再次启动tableView。

目标C:

 self.tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped]; 

Swift 4:

 self.tableView = UITableView(frame: CGRect.zero, style: .grouped) 

Swift 2.1:

 let myTableViewController = UITableViewController(style: UITableViewStyle.Grouped) 

如果您有一个TableView用于更多的表格,并且其中一个表格是分组的,另一个表格是纯的,则可以使用UITableViewDelegate中的函数来模拟普通样式:

 override func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { return CGFloat.min } 

你也可以使用storyboard / XIB来做到这一点

  1. 转到故事板 – >select你的viewController – >select你的表
  2. 在界面构build器中select“样式”属性
  3. select“分组”
  4. 完成

设置这个问题并不难。 其实这很简单 试试这个故事板。

在这里输入图像说明

斯威夫特4

使用普通的TableView

 let tableView = TableView(frame: .zero, style: .grouped) 

使用TPKeyboardAvoidingTableView

 let tableView = TPKeyboardAvoidingTableView(frame: .zero, style: .grouped) 

您也可以尝试使分隔线颜色清晰,这可以给出分组样式效果:

 [myTVContoller.tableView setSeparatorColor:[UIColor clearColor]]; 

您可以使用:

 (instancetype)init { return [[YourSubclassOfTableView alloc] initWithStyle:UITableViewStyleGrouped]; } 
 self.tableView.style = UITableViewStyleGrouped 

编辑:

假设这是一个读/写属性。 在这种情况下,您可以遵循Dimitris的build议,并在实例化控制器时设置样式,或者(如果您使用的是XIB),可以通过IB进行设置。