Mam UITableViewController
podklasę z sekcjami. Sekcje są wyświetlane w domyślnym stylu (bez zaokrąglonych rogów). Jak ustawić styl TableView na zgrupowany w kodzie? Nie używam do tego programu Interface Builder, więc potrzebuję czegoś takiego
[self.tableView setGroupedStyle]
Szukałem na Stack Overflow, ale nie mogłem znaleźć odpowiedzi.
ios
objective-c
uitableview
cocoa-touch
Nevan King
źródło
źródło
Odpowiedzi:
Jeśli rozumiem, co masz na myśli, musisz zainicjować swój kontroler w tym stylu. Coś jak:
myTVContoller = [[UITableViewController alloc] initWithStyle:UITableViewStyleGrouped];
źródło
Możesz wykonać następujące czynności:
UITableView *myTable = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];
Swift 3:
let tableView = UITableView.init(frame: CGRect.zero, style: .grouped)
źródło
UITableView
, akceptowana odpowiedź to aUITableViewController
.CGRectZero
wraz ze stylem widoku tabeli, a następnie dodaj swoje ograniczenia, a otrzymasz odpowiedni styl wraz z ograniczeniami.Podaję Ci moje rozwiązanie, pracuję w "trybie XIB", tutaj kod podklasy UITableViewController:
-(id)initWithCoder:(NSCoder *)aDecoder { self = [super initWithStyle:UITableViewStyleGrouped]; return self; }
źródło
Poniższy kod zadziałał dla mnie, używam również klasy UITableview
- (id)initWithStyle:(UITableViewStyle)style { self = [super initWithStyle:UITableViewStyleGrouped]; if (self) { } return self; }
źródło
Jeśli dziedziczysz UITableViewController, możesz po prostu ponownie zainicjować tableView.
Cel C:
self.tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];
Szybki:
self.tableView = UITableView(frame: CGRect.zero, style: .grouped)
źródło
Ustawienie, które nie jest takie trudne, jak wspomniano w pytaniu. Właściwie to całkiem proste. Spróbuj tego na scenorysie.
źródło
Szybki 4
Używanie Normal TableView
Korzystanie z TPKeyboardAvoidingTableView
źródło
Swift 4+:
let myTableViewController = UITableViewController(style: .grouped)
źródło
Aby ustawić zgrupowany styl w samym interfejsie użytkownika: -Wybierz TableView, a następnie zmień „styl” (w inspektorze atrybutów)) z prostego na zgrupowany.
źródło
Możesz to również zrobić, jeśli chcesz go użyć w podklasie, którą już utworzyłeś w oddzielnym pliku Swift (prawdopodobnie nie w 100% poprawne, ale działa)
override init(style: UITableViewStyle) { super.init(style: style) UITableViewStyle.Grouped } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") }
Teraz w swoim appdelegate.swift możesz zadzwonić:
źródło
Możesz to zrobić również za pomocą Storyboard / XIB
źródło
Jeśli masz jeden TableView dla większej liczby tabel, a jedna z tych tabel jest zgrupowana, a druga zwykła, możesz zasymulować zwykły styl za pomocą funkcji z UITableViewDelegate:
override func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { return CGFloat.min }
źródło
szybki 4
jeśli nie chcesz używać scenorysu, może to być pomocne.
możesz dodać widok tabeli i ustawić właściwości w zamknięciu:
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 }()
następnie dodaj widok podrzędny i ustaw ograniczenia.
źródło
Możesz także spróbować wyczyścić kolor linii separatora, co może dać efekt stylu zgrupowania:
[myTVContoller.tableView setSeparatorColor:[UIColor clearColor]];
źródło
Możesz użyć:
(instancetype)init { return [[YourSubclassOfTableView alloc] initWithStyle:UITableViewStyleGrouped]; }
źródło
self.tableView.style = UITableViewStyleGrouped
EDYTOWAĆ:
Założył, że jest to właściwość do odczytu / zapisu. W takim przypadku możesz albo postępować zgodnie z radą Dimitrisa i ustawić styl podczas tworzenia instancji kontrolera, albo (jeśli używasz XIB), możesz ustawić go przez IB.
źródło