Eine XIB-Datei mit mehreren "Dateieignern" s
Ich habe drei verschiedene UITableViews, jeder in seiner eigenen Ansicht, der Zugriff erfolgt über Registerkarten. Alle drei Tabellen im Idealfall teilen sich die gleiche custom UITableViewCell Klasse und .xib-Datei.
Angefangen habe ich mit einer Tabelle, festlegen der Klasse der .xib, um meine eigene Klasse und der Besitzer der Datei .xib der Tabelle parent UIViewController, das funktioniert Super. Alle benutzerdefinierten anzeigen-code ist in der Zelle s-Klasse (hintergrund-Bilder basierend auf einer Eigenschaft festlegen, durch die Steuerung, benutzerdefinierte Zelle Höhe basierend auf der Anzahl der Linien a-label erfordert, basiert auf einem cell-Eigenschaft festlegen, durch die Steuerung, etc.).
Das Ergebnis ist schön: die Zelle ist verantwortlich für alle visuellen layout und reagiert auf die Aktionen des Benutzers auf der Zelle steuert, während der view-controller ist verantwortlich für die Erstellung der Zellen und Festlegung Ihrer Daten.
Nun, dass ich brauche, um die Wiederverwendung der Zelle in andere Tabellen, aber die Tatsache, dass die benutzerdefinierte Zelle .xib eine einzelne Datei den Besitzer ein problem. Anstelle der Duplizierung des .xib-Datei, gibt es eine einfache Möglichkeit, mehrere Controller zu besitzen?
InformationsquelleAutor der Frage Matthew Frederick | 2011-05-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einer nib-Datei der Besitzer nicht strikt durchgesetzt werden. Stattdessen ist es nur verwendet, um zu bestimmen, zur Verfügung outlets und actions und bindings in Interface Builder. Sie können das laden einer Feder, die mit jedem Objekt als File ' s Owner unabhängig von der Klasse festgelegt, in der nib-Datei. Wenn eine Feder geladen ist, wird das senden von Nachrichten an der Besitzer der Datei zu re-etablieren-Bindungen. Wenn die tatsächliche File ' s Owner Objekt nicht erkennen-Selektoren haben Sie ausgelöst, eine "unrecognized selector" Ausnahme. Dies bedeutet, dass, wenn Ihre Feder bindet einige
UITableViewCell
auf die 'Zelle' outlet von seinen File ' s Owner dann jedes Objekt mit einem 'cell' - Eigenschaft laden konnte, nib. Sie müssen nur darauf achten nicht zu mit diesem Verhalten senden Sie eine unrecognized selector oder unerwartete outlet-Klasse.In Ihrem Fall, sollten Sie das erstellen einer einzigen
UIViewController
Unterklasse zu handeln, wie der Besitzer der Datei Ihrer Feder. Jedes Ihrer drei bestehenden Controller zu erweitern, die view-controller Unterklasse. Auf diese Weise können alle Erben die gleichen Eigenschaften erwartet, die von der nib-Datei und sind alle sicher-Last, Feder, während Sie noch definieren, das eigene Verhalten.InformationsquelleAutor der Antwort Jonah
Den überprüfte Antwort zu diese Frage beschreibt zwei Ansätze zu laden, benutzerdefinierte Tabelle-Zellen von nib-Dateien, die nicht erfordern, um den Datei-Eigentümer, um Ihre spezifischen controller. Diese Ansätze lassen Sie die Wiederverwendung von Zellen mit verschiedenen Besitzern.
InformationsquelleAutor der Antwort albertamg
Einer "gemeinsamen" super-Klasse als Datei-Besitzer ist nicht immer eine gute Lösung.
Denken Sie daran, können Sie immer laden Sie die xib-in Ihrer Ansicht, und stellen Sie die verbindungen ohne Verwendung von outlet, zum Beispiel:
Ich kann nicht sagen, dass dies eine saubere Lösung, aber in einigen Fällen könnte die Arbeit besser als Vererbung .
InformationsquelleAutor der Antwort andreacipriani