Как настроить UITableView на сгруппированный стиль

У меня есть подкласс UITableViewController с разделами. Разделы отображаются с использованием стиля по умолчанию (без закругленных углов). Как настроить стиль TableView для группировки в коде? Я не использую Interface Builder для этого, поэтому мне нужно что-то вроде

[self.tableView setGroupedStyle]

Я искал в Stack Overflow, но не смог ответить.

Ответ 1

Если я понимаю, что вы имеете в виду, вы должны инициализировать свой контроллер этим стилем. Что-то вроде:

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

Ответ 2

Вы можете сделать следующее:

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

Swift 3:

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

Ответ 3

Я даю вам свое решение, я работаю в режиме "XIB", здесь код подкласса UITableViewController:

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

Ответ 4

Ниже код Работал для меня, я также использую класс UITableview

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

     if (self)
    {

     }
    return self;
}

Ответ 5

Если вы наследуете UITableViewController, вы можете просто снова запустить tableView.

Цель C:

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

Swift:

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

Ответ 6

Установка это не так сложно, как указано в вопросе. На самом деле это довольно просто. Попробуйте это на раскадровке.

enter image description here

Ответ 7

Для набора сгруппированного стиля в самом ui: -Выберите TableView, затем измените "стиль" (в инспекторе атрибутов)) из plain в Grouped.

Ответ 8

Свифт 4+:

let myTableViewController = UITableViewController(style: .grouped)

Ответ 9

Вы также можете сделать это, если хотите использовать его в подклассе, который вы уже создали в отдельном быстром файле (возможно, не на 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)

Ответ 10

Swift 4

Использование обычного TableView

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

Использование TPKeyboardAvoidingTableView

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

Ответ 11

Вы можете сделать это с помощью раскадровки /XIB также

  • Перейти к раскадровке → Выберите свой viewController → Выберите свою таблицу
  • Выберите свойство Style в интерфейсе-построителе
  • Выберите "Группировка"
  • Готово

Ответ 12

Если у вас есть один TableView для большего количества таблиц, и одна из этих таблиц сгруппирована, а другая одна простая, чем вы можете имитировать простой стиль с помощью функции из UITableViewDelegate:

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

Ответ 13

Swift 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
    }()

затем добавьте в подпредставление и установите ограничения.

Ответ 14

Вы также можете попытаться сделать цвет разделительной линии прозрачным, что может дать эффект сгруппированного стиля:

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

Ответ 15

Вы можете использовать:

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

Ответ 16

self.tableView.style = UITableViewStyleGrouped

EDIT:

Предполагалось, что это свойство чтения/записи. В этом случае вы можете следовать рекомендациям Димитриса и задавать стиль при создании экземпляра контроллера или (если вы используете XIB), вы можете установить его через IB.