So ändern Sie den Stil eines UITableViewController programmgesteuert in Xcode
Ich versuche, ändern Sie den Stil eines UITableViewController
zu Gruppen zusammengefasst. Ich weiß, Sie können dies tun, wenn das erstellen einer neuen Tabelle anzuzeigen, aber ich habe eine Klasse, die Sie erweitert UITableViewController
, so dass ich nicht brauchen, um eine neue Tabelle anzeigen. Hier ist mein code:
#import "DetailViewController.h"
#import "NSArray-NestedArrays.h"
@implementation DetailViewController
@synthesize steak, sectionNames, rowControllers, rowKeys, rowLabels;
- (void)viewDidLoad {
sectionNames = [[NSArray alloc] initWithObjects:[NSNull null], NSLocalizedString(@"General", @"General"), nil];
rowLabels = [[NSArray alloc] initWithObjects:
[NSArray arrayWithObjects:NSLocalizedString(@"Steak Name", @"Steak Name"), nil],
[NSArray arrayWithObjects:NSLocalizedString(@"Steak Wellness", @"Steak Wellness"), NSLocalizedString(@"Steak Type", @"Steak Type"), NSLocalizedString(@"Other", @"Other"), nil]
, nil];
rowKeys = [[NSArray alloc] initWithObjects:
[NSArray arrayWithObjects:@"steakName", nil],
[NSArray arrayWithObjects:@"steakWellness", @"steakType", @"other", nil]
, nil];
//TODO: Populate row controllers array
[super viewDidLoad];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return [sectionNames count];
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
id theTitle = [sectionNames objectAtIndex:section];
if ([theTitle isKindOfClass:[NSNull class]]) {
return nil;
}
return theTitle;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [rowLabels countOfNestedArray:section];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"SteakCellIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:CellIdentifier];
}
NSString *rowKey = [rowKeys nestedObjectAtIndexPath:indexPath];
NSString *rowLabel = [rowLabels nestedObjectAtIndexPath:indexPath];
cell.detailTextLabel.text = rowKey;
cell.textLabel.text = rowLabel;
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
//TODO: Push editing controller onto the stack
}
@end
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht nach? Was meinst du mit, die Sie nicht haben, um "eine neue Tabelle anzeigen"?? Sie haben noch zu instanziieren eines.
Entweder man erstellt eine bereits und es hat den Stil, den Sie wollen, oder Sie haben zu instanziieren, eine neue ein und setzen Sie die Eigenschaft auf Sie.
tableView.Stil ist READONLY. So dass Sie nicht ändern können den Stil eines bereits vorhandenen. Sind Sie gehen zu müssen, etwas zu tun:
Können Sie nicht ändern Sie einfach den Stil eines
UITableView
. Also Sie haben nur 2 Optionen:UITableView
die gruppiertHoffe es hilft
Können Sie erstellen eine neue tableview zu überschreiben
UITableviewController
's tableview wie diese:Würden Sie kümmern, wenn Sie instanziiert Ihre view-controller.
Beispielsweise ein Exemplar einer normalen UITableViewController würden Sie tun, die folgenden.
Deshalb, wenn Sie haben extended UITableViewController dann wird Ihr init-code sollte sich darum kümmern.
Um dies zu erreichen, müssen Sie diese Methode implementieren, in der Ihre .m-Datei. Unten ist ein Beispiel dafür, was dein Kopf und die Implementierung Datei enthalten sollte für die Instanziierung.
Header
Umsetzung
Beim Aufruf [super initWithStyle:style] der code von apple kümmern sich um Gebäude der tableview für Sie mit den angeforderten view style.
einfach Kumpel zu reservieren, setzen Sie den Rahmen und Stil der Tabelle ..Beispiel code aufschreiben.