如何将UITableView设置为分组样式

时间:2009-06-17 12:24:36

标签: ios objective-c uitableview cocoa-touch

我有一个带有部分的UITableViewController子类。这些部分显示默认样式(没有圆角)。如何将TableView样式设置为在代码中分组?我没有使用Interface Builder,所以我需要像

这样的东西
[self.tableView setGroupedStyle]

我搜索了Stack Overflow,但无法得出答案。

17 个答案:

答案 0 :(得分:121)

您可以执行以下操作:

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

斯威夫特3:

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

答案 1 :(得分:96)

如果我明白你的意思,你必须用这种风格初始化你的控制器。类似的东西:

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

答案 2 :(得分:19)

我给你解决方案,我在“XIB模式”工作,这里是UITableViewController子类的代码:

-(id)initWithCoder:(NSCoder *)aDecoder
{
    self = [super initWithStyle:UITableViewStyleGrouped];
    return self;
}

答案 3 :(得分:13)

下面代码为我工作,我也在使用UITableview类

- (id)initWithStyle:(UITableViewStyle)style
{
     self = [super initWithStyle:UITableViewStyleGrouped];

     if (self)
    {

     }
    return self;
}

答案 4 :(得分:6)

如果继承UITableViewController,则可以再次初始化tableView。

目标C:

self.tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];
斯威夫特4:

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

答案 5 :(得分:5)

设置并不像问题中提到的那么难。实际上它非常简单。在故事板上试试这个。

enter image description here

答案 6 :(得分:2)

Swift 4 +:

let myTableViewController = UITableViewController(style: .grouped)

答案 7 :(得分:2)

Swift 4

使用普通TableView

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

使用TPKeyboardAvoidingTableView

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

答案 8 :(得分:2)

You can also do this if you want to use it on a subclass you've already created in a separate swift file (probably not 100% correct but works)

override init(style: UITableViewStyle) {
    super.init(style: style)
    UITableViewStyle.Grouped
}

required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}

Now in you appdelegate.swift you can call:

let settingsController = SettingsViewController(style: .Grouped)

答案 9 :(得分:2)

对于ui本身中的设置分组样式: - 选择TableView,然后将"样式"(在属性检查器中)从plain更改为Grouped。

答案 10 :(得分:1)

您也可以使用storyboard / XIB

来完成此操作
  1. 转到故事板 - >选择你的viewController - >选择你的桌子
  2. 在interface-builder
  3. 中选择“Style”属性
  4. 选择“分组”
  5. 完成

答案 11 :(得分:0)

如果你有一个TableView用于更多的表,并且其中一个表被分组而另一个表是普通的,那么你可以使用UITableViewDelegate中的函数模拟普通样式:

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

答案 12 :(得分:0)

迅速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
    }()

然后添加子视图并设置约束。

答案 13 :(得分:0)

如果您在代码中创建 UITableView,则可以执行以下操作:

class SettingsVC: UITableViewController {

    init() {
        if #available(iOS 13.0, *) {
            super.init(style: .insetGrouped)
        } else {
            super.init(nibName: nil, bundle: nil)
        }
     }
    
     @available(*, unavailable)
     required init?(coder aDecoder: NSCoder) {
         fatalError("init(coder:) has not been implemented")
     }
 }

答案 14 :(得分:-3)

您还可以尝试清除分隔线颜色,这样可以产生分组样式效果:

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

答案 15 :(得分:-11)

您可以使用:

(instancetype)init {
return [[YourSubclassOfTableView alloc] initWithStyle:UITableViewStyleGrouped];
}

答案 16 :(得分:-25)

self.tableView.style = UITableViewStyleGrouped

编辑:

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