2009-06-14 6 views
1

UITableViewController verfügt über eine initWithStyle-Methode, in der Sie den Stil übergeben, den die Tabellenansicht verwenden soll, einfach oder gruppiert. Diese Mittel, die zum Erstellen und meine Tabelle View-Controller zu verwenden, irgendwo anders im Code, die möglicherweise an mehreren Stellen, ich dies tun:Was ist der beste Weg, gruppierte Tabellenansicht-Controller auf dem iPhone zu erstellen?

MyViewController *myViewController = [[MyViewController alloc] initWithStyle: UITableViewStyleGrouped]; 
[self.navigationController pushViewController: myViewController animated: YES]; 
[myViewController release]; 

Dies scheint mich nach hinten. Die Klassen, die meinen UITableViewController verwenden, sollten nicht wissen oder sich darum kümmern, ob sie gruppierten oder einfachen Stil verwenden, das ist ein Problem, das der MyViewController beachten sollte. Was ist der idiomatische Umgang damit? Überschreiben Sie die init-Methode in MyViewController, um initWithStyle aufzurufen?

Antwort

0

Meine Antwort als Neuling ist "mach es einfach" und sorge dich später um die philosophischen Designfragen. Alle Beispiele, die ich gesehen habe, einschließlich populärer Bücher, haben dieses "Muster", also kann es nicht zu falsch sein.

+0

Ja, das ist, was ich tue, ich bin nur auf der Suche nach etwas Feedback von einigen anderen Entwicklern um zu sehen, welche Best Practices sie entwickeln – pjb3

+0

No prob. Ich stelle mir ähnliche Fragen über die "beste" Art und Weise, einige Dinge zu tun (wie etwa welches Objekt sollte das Modell im MVC-Muster besitzen). Ich verbringe Stunden damit, es zum Laufen zu bringen und ziemlich oft nicht (immer noch neu). Dann denke ich - warum mache ich das? Für den Moment mache ich einfach was funktioniert, und ich kann es später überprüfen, wenn ich mehr weiß/verstehe. – kindaran

0

Seien Sie vorsichtig, wenn Sie eine Init-Methode für eine Superklasse überschreiben, die eine andere aufruft. Ich bin mir nicht sicher hier, aber IF initWithStyle ruft bereits init in der Oberklasse auf, wenn Sie init in der Unterklasse überschreiben und den Super aufrufen, haben Sie vielleicht eine Schleife auf Ihren Händen.

0

Ich möchte einen Tisch View-Controller durch Xcode nur erstellen, die Tabelle den gruppierten Stil in Interface Builder zuweisen, außer Kraft setzen dann die init-Methode, falls erforderlich:

- (id)init { 
    self = [super initWithNibName:@"MyViewControllerNibFileName" bundle:nil]; 
    if (self) { 
     // Do other customisation 
    } 
    return self; 
} 

ich für einige der Feder Namen explizit benötigt Grund, aber manchmal findet der View-Controller es nur automatisch (ich bin immer noch ein Neuling, also nicht sicher, warum das passiert)

Verwandte Themen