6

Ich habe allgemeine Funktionen, auf die ich von allen Bildschirmen meiner App aus zugreifen muss: ein Element der rechten Leiste und zugehörige Aktionen.Kann ich einen UITableViewController erstellen, der von einer benutzerdefinierten Unterklasse von UIViewController erbt?

Um den Code nicht zu wiederholen, möchte ich dies in einem benutzerdefinierten UIViewController einrichten und alle meine View-Controller erben von ihm.

- (void)viewDidLoad { 
    UIBarButtonItem *rightBarButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemPlay target:self action:@selector(lightsCamera)]; 
    self.navigationItem.rightBarButtonItem = rightBarButton; 
} 

- (void)lightsCamera { 
    … 
} 

Allerdings habe ich eine Reihe von UITableViewControllers jedoch, und ich würde gerne wissen, ob es möglich ist, für die sie die Funktionalität zu erben?

Antwort

6

Es ist ziemlich trivial, eigene UITableViewController von Ihrer benutzerdefinierten UIViewController Unterklasse neu zu erstellen.

Der Controller haben eine UITableView Eigenschaft muss, die auch seine view Eigenschaft festgelegt ist, die richtigen Größenänderung Masken gesetzt, setzen Sie sich als Delegierter Tisch und Datenquelle, und erinnere mich an die Scrollbar Indikatoren in -viewDidAppear: zu blinken und Sie mehr haben oder weniger.

Mehr here.

+0

Wissen Sie, ob dies der einzige Weg ist, um das zu erreichen, wonach ich suche? Wenn das der Fall ist, werde ich 'UITableViewController' aufgeben und mein eigenes erstellen, wie Sie es vorschlagen. – prendio2

+1

Überschreiben Methoden in einer Kategorie ist keine sehr gute Idee, so wird dies wahrscheinlich Ihre beste Wette sein. Alternativ können Sie auch 'UITableViewController' ableiten und dort Ihre Funktionalität hinzufügen und dann den Rest Ihrer benutzerdefinierten Tabellen-Controller erben lassen. – jbrennan

+0

Das ist genau die Antwort, die ich suchte :) Du hast meinen Tag gemacht! – sachadso

2

Wenn Sie dem Ansichtscontroller keine neuen Attribute hinzufügen, können Sie die beiden Methoden in einer Kategorie in UIViewController implementieren, und alle Unterklassen erben diese standardmäßig.

+0

Meinst du eine Kategorie in der Ansicht oder auf dem View-Controller? Kann ich in seiner Ansicht auf das 'navigationItem' eines View-Controllers zugreifen? – prendio2

+0

Ich denke, er wollte UIViewController sagen. Das ist, wo diese Funktionalität gehört. Keine Notwendigkeit, UIView einzubeziehen. – jlehr

+0

Ja, tut mir leid UIViewController. Ich werde bearbeiten. – TechZen

Verwandte Themen