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%Sie werden eine sehr ähnliche Frage hier beantwortet finden:
UITableView-Problem bei Verwendung separater Delegate / dataSource
>Ich denke, Sie werden die Antworten hilfreich finden.
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.
Tags und Links objective-c iphone xcode