2017-05-24 3 views
0

im Apple-Standard-Master/Detail-Vorlage auszuführen, gibt der folgende Code ist die Handhabung des showDetail segue:SplitViewController template - Welcher Mechanismus sagt das Gerät den Übergang in den Detail-Controller statt Master Controller

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "showDetail" { 
     if let indexPath = tableView.indexPathForSelectedRow { 
      let object = fetchedResultsController.object(at: indexPath) 
      let controller = (segue.destination as! UINavigationController).topViewController as! DetailViewController 
      controller.detailItem = object 
      controller.navigationItem.leftBarButtonItem = splitViewController?.displayModeButtonItem 
      controller.navigationItem.leftItemsSupplementBackButton = true 
     } 
    } 
} 

und das Drehbuch darauf hinweist, dass diese segue ist Art von Show Detail (e.g. Replace)

enter image description here

Meine Frage ist folgende:

Warum im Großbildmodus (aka: auf einem iPhone 6+, 7+ oder einem iPad) der Navigationscontroller MasterViewController nicht seine eingebettete Ansicht schiebt, wie ein normales segue tun würde (welcher Teil des Code macht es "arbeiten")?

der Code Da lese ich, werde ich auf einer iPad erwarten, dass die Master-Controller sehen auf die detaillierte Steuerung geändert werden, aber das richtige Verhalten geschieht (Master nicht ersatzlos und Details werden aktualisiert) und ich kann nicht verstehen warum.

Antwort

0

Die Magie hier ist das Show Detail Segment im Storyboard. Der Code hat wenig damit zu tun. Es übergibt einfach Daten an DetailViewController. Sie können den Code sogar löschen, wenn Sie möchten. Der neue VC wird weiterhin in der Detailansicht angezeigt.

Das "Kind" des Segue hier ist etwas ganz Besonderes - Show Detail:

enter image description here

Dies ist, was die neue VC verursacht auf der Detailansicht anzuzeigen. Versuchen Sie, die Art auf etwas anderes wie Show zu ändern und die Detailansicht wird einfach auf den Master geschoben.

+0

Hallo @Sweeper, Ich habe die 'Art' in' Show' geändert, wie Sie vorgeschlagen haben, es hat sich nicht auf das Verhalten der Anwendung (von beiden kompakten und großen Bildschirm) –

Verwandte Themen