У меня есть UITableViewController
подкласс с разделами. Разделы отображаются в стиле по умолчанию (без закругленных углов). Как я могу настроить стиль TableView на группировку в коде? Я не использую для этого Interface Builder, поэтому мне нужно что-то вроде
[self.tableView setGroupedStyle]
Я искал на Stack Overflow, но не смог найти ответа.
ios
objective-c
uitableview
cocoa-touch
Неванский король
источник
источник
Ответы:
Если я понимаю, что вы имеете в виду, вы должны инициализировать свой контроллер в этом стиле. Что-то типа:
myTVContoller = [[UITableViewController alloc] initWithStyle:UITableViewStyleGrouped];
источник
Вы можете сделать следующее:
UITableView *myTable = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];
Swift 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; }
источник
Если вы наследуете UITableViewController, вы можете просто снова запустить tableView.
Цель C:
self.tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];
Swift:
self.tableView = UITableView(frame: CGRect.zero, style: .grouped)
источник
Это не так сложно, как упоминалось в вопросе. На самом деле это довольно просто. Попробуйте это на раскадровке.
источник
Swift 4
Использование обычного TableView
Использование TPKeyboardAvoidingTableView
источник
Swift 4+:
let myTableViewController = UITableViewController(style: .grouped)
источник
Для установки группового стиля в самом пользовательском интерфейсе: -Выберите TableView, затем измените «стиль» (в инспекторе атрибутов)) с простого на Сгруппированный.
источник
Вы также можете сделать это, если хотите использовать его в подклассе, который вы уже создали в отдельном быстром файле (вероятно, не на 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 вы можете вызвать:
источник
Вы можете сделать это также с помощью раскадровки / XIB
источник
Если у вас есть один 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 }()
затем добавьте subview и установите ограничения.
источник
Вы также можете попытаться сделать цвет разделительной линии четким, что может дать эффект группированного стиля:
[myTVContoller.tableView setSeparatorColor:[UIColor clearColor]];
источник
Ты можешь использовать:
(instancetype)init { return [[YourSubclassOfTableView alloc] initWithStyle:UITableViewStyleGrouped]; }
источник
self.tableView.style = UITableViewStyleGrouped
РЕДАКТИРОВАТЬ:
Предполагалось, что это свойство чтения / записи. В этом случае вы можете либо последовать совету Димитриса и установить стиль при создании экземпляра контроллера, либо (если вы используете XIB) вы можете установить его через IB.
источник