2016-05-07 7 views
2

Ich habe eine UIScrollView, enthält 3 Seiten.Wie soll man mit mehreren Delegierten in einem ausgelagerten UIScrollView umgehen

Die ersten beiden sind UITableView, ist der dritte ein UICollectionView

So in einem View-Controller muss ich an Delegatmethoden für alle von ihnen zu schreiben.

gegoogelt ich ein wenig und fand eine Lösung wie diese (noch nicht getestet),

Platz jede Seite in einem separaten UIViewController, implementieren die entsprechenden Delegatmethoden, und verwenden Sie UIViewController.view Attribut, das Buch zu bauen Ansicht

Die UIViewController.view Ansatz scheint mir falsch, ist das der normale Weg, es zu tun?

+0

Stellen Sie Outlets für jede Tabellenansicht und Sammelansicht ein und überprüfen Sie sie in den Delegaten. Ich meine 'if (tableview == yurtableview)' in Datenquelle oder Delegaten. –

+0

@sohanvanani Ich versuche, die Delegiertenmethoden in verschiedenen Dateien und verschiedenen View-Controllern zu platzieren – daisy

+0

ok ich denke, das wird einfach sein siehe meinen bearbeiteten Kommentar –

Antwort

0

Warum versuchen Sie, alle Delegate-Aufrufe in einem View-Controller zu behandeln, können Sie nicht jeweils einen separaten View-Controller erstellen? Wenn Sie sich jetzt nicht trennen, wird es schwieriger für Sie, den Code später zu verwalten.

0

Die Verwendung des Controller-Aufbaus ist eine standardisierte und anerkannte Lösung für das Problem des Massive View Controllers. Untersuchen Sie zum Beispiel die Ausstellungen an the StackViewController project die geschickt dieses Konzept nutzt Formen in einem UIStackView zu erstellen:

Komposition der Vererbung ist ein Grundprinzip der objektorientierten Programmierung.

Dieses Prinzip wurde immer in iOS-Ansichtshierarchien verwendet, wo komplexere Ansichten aus einfacheren bestehen (z. B. wie eine UIButton eine UILabel und eine UIImageView enthält, die ihren Inhalt rendern). Es gab jedoch keine "offizielle" Möglichkeit, View-Controller zu erstellen, bis die Einbeziehung von View-Controllern in iOS 5 eingeführt wurde. Es war möglich, ein Verhalten wie vor iOS 5 nachzuahmen, aber die Weitergabe von Ereignissen zwischen übergeordneten und untergeordneten View-Controllern zu handhaben Übergänge zwischen den Viewcontrollern für Kinder waren schwer zu korrigieren, und alle Probleme, die die View-Controller-Containment-API löst

Auf dieselbe Weise können Sie komplexe Layouts durch Zusammensetzen mehrerer UIStackView-Instanzen erstellen. Mit der View Controller-Containment-API können Sie mehrere Instanzen von StackViewController zusammenstellen, um eine Hierarchie von Ansichtscontrollern zu erstellen, wobei jede Inhaltsansicht von einer entsprechenden Ansicht unterstützt wird View-Controller, der die Verantwortlichkeiten sauber trennt, anstatt alles auf der Ansichtsebene zu behandeln (ein Anti-Pattern, wie bereits erwähnt).

Überprüfen Sie auch 8 Patterns to Help You Destroy Massive View Controller, insbesondere

Standardzusammensetzung

Ansicht Controller können in iOS 5 eingeführt mit dem View-Controller-Contain APIs bestehen Wenn Ihr View-Controller von mehreren logischen Einheiten zusammengesetzt ist, dass Könnte jeder sein eigener View-Controller sein, überlegen Sie, ob Sie Composition verwenden, um sie auseinander zu brechen. Eine praktische Anwendung dieses Lackmustests ist ein Bildschirm mit mehreren Tabellenansichten oder Sammlungsansichten.

Welches ist in der Tat die genaue Situation, dass Sie es praktisch anwenden müssen!

Verwandte Themen