Einfache Trennung der UITableview-Datenquelle und des Delegaten von der UIViewController-Hauptklasse?

8

Das typische UITableView-Verwendungsmuster besteht darin, dass der Haupt-UIViewController eine Ziel-Datenquelle wird und der UITableView, an dem er sich festhält, delegiert wird.

Gibt es einfache und leicht zu befolgende Tutorials, die mir helfen würden herauszufinden, wie der Code, der zu den Methoden UITableViewDelegate und UITableViewDataSource gehört, in eine separate Klasse verschoben und stattdessen an meinen UIViewController angehängt werden soll? Ich möchte im Idealfall, dass sowohl der Delegierte als auch die Datenquelle in derselben Klasse leben.

Im Moment erstelle ich das UITableView über den Interface Builder und verbinde seinen Ausgang mit meiner Controller-Klasse.

Typischer Code:

%Vor%

Ich möchte etwas mehr so ​​machen:

%Vor%     
Alexi Groove 19.01.2010, 22:57
quelle

5 Antworten

5

Sie werden eine sehr ähnliche Frage hier beantwortet finden:

UITableView-Problem bei Verwendung separater Delegate / dataSource

>

Ich denke, Sie werden die Antworten hilfreich finden.

    
David Peckham 20.01.2010, 01:25
quelle
2

Ich habe 2 Stunden gebraucht, um dieses Problem zu lösen:

Es funktioniert für mich

%Vor%     
WINSergey 06.01.2012 09:29
quelle
2

Zuerst ist, dass wenn Sie eine UITableViewController-Unterklasse mit Interface Builder verwenden, Sie die Delegate- und Datenquellen-Outlets, die bereits standardmäßig verbunden sind, trennen möchten. (Tipp, schau im Verbindungsinspektor nach). Überprüfen Sie, ob Sie ein TableView in einem ViewController haben.

Zweite Erstellen Sie Ihre Klassen und stellen Sie sicher, dass sie mit <UITableViewDelegate> und <UITableViewDataSource> übereinstimmen. Wahrscheinlich müssen Sie diesen Vertrag in der .h-Datei deklarieren, wenn Sie objc verwenden.

Third In Ihrem View-Controller instanziieren Sie diese Klasse oder zwei separate Klassen wie viewDidLoad und weisen Sie dann self.tableView.delegate = myCustomDelegateInstance und self.tableView.dataSource = myCustomDataSourceInstance zu.

Nun werden alle Anrufe, die über den Controller eingehen, an Ihre benutzerdefinierten Handler gesendet. Ziemlich einfach.

Der einzige Grund, dies wirklich zu tun, ist, wenn Sie 1) einen sehr aufgeblähten Controller haben oder 2) Sie die dataSource wiederverwenden und Methoden an anderer Stelle delegieren müssen und Sie Code-Wiederholungen vermeiden möchten. Ansonsten ist es wahrscheinlich besser, es zu verlassen.

    
smileBot 21.04.2015 02:14
quelle
0

Sie können separate Klassen erstellen (mit UITableViewDelegate, UITableViewDataSource) und diese in IB als externe Dateien hinzufügen und die IBActions

verknüpfen     
CiNN 19.01.2010 23:01
quelle
0

In IB, können Sie ein 'Außen Objekt' ziehen von Bibliotheks- & gt; Cocoa Touch- & gt; Controller in Ihre xib Fenster. Sie können dann das Objekt auswählen, den Inspektor anzeigen und die Klasse festlegen. Es ist jetzt verfügbar, um als ein Delegat usw. zu dienen.

    
shawnwall 20.01.2010 00:20
quelle

Tags und Links