Ответ 1
Если я понимаю, что вы имеете в виду, вы должны инициализировать свой контроллер этим стилем. Что-то вроде:
myTVContoller = [[UITableViewController alloc] initWithStyle:UITableViewStyleGrouped];
У меня есть подкласс UITableViewController
с разделами. Разделы отображаются с использованием стиля по умолчанию (без закругленных углов). Как настроить стиль TableView для группировки в коде? Я не использую Interface Builder для этого, поэтому мне нужно что-то вроде
[self.tableView setGroupedStyle]
Я искал в Stack Overflow, но не смог ответить.
Если я понимаю, что вы имеете в виду, вы должны инициализировать свой контроллер этим стилем. Что-то вроде:
myTVContoller = [[UITableViewController alloc] initWithStyle:UITableViewStyleGrouped];
Вы можете сделать следующее:
UITableView *myTable = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];
Swift 3:
let tableView = UITableView.init(frame: CGRect.zero, style: .grouped)
Я даю вам свое решение, я работаю в режиме "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;
}
Если вы наследуете UITableViewController, вы можете просто снова запустить tableView.
Цель C:
self.tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];
Swift:
self.tableView = UITableView(frame: CGRect.zero, style: .grouped)
Установка это не так сложно, как указано в вопросе. На самом деле это довольно просто. Попробуйте это на раскадровке.
Для набора сгруппированного стиля в самом ui: -Выберите TableView, затем измените "стиль" (в инспекторе атрибутов)) из plain в Grouped.
Свифт 4+:
let myTableViewController = UITableViewController(style: .grouped)
Вы также можете сделать это, если хотите использовать его в подклассе, который вы уже создали в отдельном быстром файле (возможно, не на 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)
Swift 4
Использование обычного TableView
let tableView = TableView(frame: .zero, style: .grouped)
Использование TPKeyboardAvoidingTableView
let tableView = TPKeyboardAvoidingTableView(frame: .zero, style: .grouped)
Вы можете сделать это с помощью раскадровки /XIB также
Если у вас есть один TableView для большего количества таблиц, и одна из этих таблиц сгруппирована, а другая одна простая, чем вы можете имитировать простой стиль с помощью функции из UITableViewDelegate:
override func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return CGFloat.min
}
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
}()
затем добавьте в подпредставление и установите ограничения.
Вы также можете попытаться сделать цвет разделительной линии прозрачным, что может дать эффект сгруппированного стиля:
[myTVContoller.tableView setSeparatorColor:[UIColor clearColor]];
Вы можете использовать:
(instancetype)init {
return [[YourSubclassOfTableView alloc] initWithStyle:UITableViewStyleGrouped];
}
self.tableView.style = UITableViewStyleGrouped
EDIT:
Предполагалось, что это свойство чтения/записи. В этом случае вы можете следовать рекомендациям Димитриса и задавать стиль при создании экземпляра контроллера или (если вы используете XIB), вы можете установить его через IB.