2012-04-15 6 views
12

Ich habe alle meine Tabellenansichtslogik auf einem UITableViewController gekapselt, der mit einer Ansicht verknüpft ist. Dies wurde mit Storyboards gemacht.Wie man einen UITableViewController innerhalb eines anderen Controllers mit Storyboards unterordnet

Ich möchte diese Logik und Ansicht in einer anderen Ansicht Controller/Ansicht einzubetten

I haben die folgenden Komponenten (unter Art wie ein Header-Informationen mit einer scrollbaren Tabelle.): CustomViewController, die zu einer verknüpften ist UIView CustomTableViewController (in von Storyboard gezogen), die mit einem UITableView verknüpft ist (geschleppt in von Storyboard)

im Grunde versuche ich, das Szenario der Stoppuhr in der App iOS Uhr zu imitieren

  • Was ist der Biest Ansatz dazu?
  • Wie wird es programmatisch gemacht?
  • Kann dies irgendwie auf dem Storyboard gemacht werden?

Jede Hilfe würde sehr geschätzt werden. Danke

+0

Ich verstehe nicht ganz ... Möchten Sie einen UIViewController als Unteransicht hinzufügen? – CodaFi

+1

"Biest Ansatz", rawr! – pfrank

Antwort

25

Ok fand es heraus. Diese Lösung ist iOS 5-spezifisch, da diese Funktion dort hinzugefügt wurde. Diese Methode funktioniert mit Storyboards.

Setup: Es ist beabsichtigt, eine View-Controller-Ansicht und -Logik in einem anderen Controller zu hosten.

  1. Da es keinen systemeigenen Weg gibt, den Child View Controller im Storyboard zu referenzieren, müssen wir dem View Controller einen Namen geben. Dies kann durch Ausfüllen des "Identifier" -Attributs auf dem Controller im Storyboard erfolgen. HINWEIS: Stellen Sie sicher, dass Sie dem Controller die Kennung und nicht die Controller-Ansicht geben.

  2. Instanziieren Sie den Controller, den Sie aggregieren möchten. Dies kann vom Hosting-Controller aus geschehen.

    UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"ControllerIdentifier"]; 
    
  3. das Kind Controller an den Controller

    Eltern Fügen Sie das Kind Controller an den übergeordneten Controller Ansicht
    [self addChildViewController: controller]; 
    
  4. hinzufügen anzuzeigen. Hinweis: Wenn Sie eine Platzhalteransicht in dem übergeordneten Controller haben, dem Sie die untergeordnete Ansicht hinzufügen möchten, können Sie dies tun. Hier füge ich eine UIView hinzu, die Stufe im übergeordneten Controller genannt wird.

    [self clearStage]; 
    [self.stageView addSubview:controller.view]; 
    presentedController.view.frame = self.stageView.bounds; 
    

Und das ist es. Ziemlich einfach. Ich habe es erfolgreich mit Switching-Controllern verwendet und in einem hausgemachten Tab-Steuerelement angezeigt. Der Untercontroller bezieht seine Ansichten in den Ansichtslebenszyklus, sodass die viewDidLoad usw. in diesem untergeordneten Ansichtscontroller wie erwartet funktionieren.

Hofft, dass dies jemand hilft.

Verwandte Themen