, wie benutzerdefinierte TabelleViewCell von Xib erstellt wird

8

Ich möchte eine benutzerdefinierte TableViewCell erstellen, auf der ich UITextField mit Bearbeitungsmöglichkeit haben möchte. Also habe ich mit xib eine neue Klasse erstellt. Fügen Sie das TableViewCell-Element hinzu. Ziehen Sie darauf UITextField. Steckplätze in meiner Klasse hinzugefügt und alle miteinander verbunden. In meiner TableView-Methode cellForRowAtIndexPath erstelle ich meine eigenen Zellen, ABER sie sind nicht meine benutzerdefinierten Zellen - sie sind nur normale Zellen. Wie kann ich dieses Problem beheben und warum? Danke!

// EditCell. h

%Vor%

// EditCell.m

%Vor%

// in meinem Code

%Vor%     
yozhik 16.11.2010, 15:25
quelle

3 Antworten

14

Verwenden Sie nicht den Initialisierer von UITableViewCell, sondern laden Sie die Zelle von Ihrer Schreibfeder aus:

%Vor%

Natürlich müssen Sie den richtigen Namen angeben.

    
Björn Marschollek 16.11.2010, 15:41
quelle
7

Sie können benutzerdefinierte UITableViewCells aus NIB-Dateien laden, ohne zuerst eine Unterklasse von UITableViewCell zu erstellen, aber mit einer Unterklasse können Sie mehr über die Zelle konfigurieren.

Erste Lösung, ohne Unterklasse:

In ViewController:

• Definieren Sie den Zell-Ivar als IBOutlet

%Vor%

In IB:

• Erstellen Sie eine neue leere NIB-Datei und öffnen Sie sie im Interface Builder

• Ziehen Sie die Tabellenansichtszelle aus der Bibliothek in das Dokumentfenster und öffnen Sie sie mit einem Doppelklick

• Passen Sie die Zelle an, vergessen Sie nicht, hinzugefügte Ansichten zu markieren

• Wählen Sie eine Zelle aus und fügen Sie einen Bezeichner hinzu (für die spätere Verwendung in tableView: cellForRowAtIndexPath:)

• Setzen Sie den Eigentümer der Datei auf die Controller-Klasse, die diese Zelle laden soll

• Verbinden Sie die Zellenzelle des Dateibesitzers mit der Zelle in der NIB

In ViewController:

• In tableView: cellForRowAtIndexPath:

%Vor%

alles eingestellt

/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /

Zweite Lösung mit Unterklasse:

Im Code-Editor:

1. Erstellen Sie eine neue Unterklasse von UITableViewCell

2. Fügen Sie die Methode initWithCoder hinzu, fügen Sie Anpassungen hinzu

%Vor%

3. Methode zum Einrichten von Werten hinzufügen (wie "setupCellWith:")

%Vor%

- & gt; Outlets werden später von IB hinzugefügt.

In IB:

4. Erstellen Sie eine neue leere XIB-Datei

5. Ändern Sie den Eigentümer der Datei = UIViewController

6. Ziehen Sie die TableView-Zelle aus der Bibliothek

7. Ändere seine Klasse in eine benutzerdefinierte Unterklasse (siehe 1.)

8. Legen Sie die Bezeichnereigenschaft der Zelle fest // wie in cellForRowAtIndexPath:

9. Verbinden Sie den Outlet des Eigentümers der Datei mit der TableView-Zelle

10. Fügen Sie Elemente der Benutzeroberfläche hinzu (set class, ...)

11. Erstellen Sie die benötigten Ausgänge per Strg-Ziehen auf CustomSubclass.h     - & gt; schwach oder stark? - & gt; schwach, stark nur Objekte der obersten Ebene ohne vordefinierte Ausgänge (d. h. wie "Ansicht")

Im Code-Editor:

12. Anpassen "tableView: cellForRowAtIndexPath:"

%Vor%
    
drct 08.05.2011 14:21
quelle
3

Sie müssen Ihre xib laden und Ihre benutzerdefinierte Zelle abrufen:

%Vor%

Stellen Sie außerdem sicher, dass Sie die tableViewCell-Klasse in Ihrer xib in EditCell geändert haben. Sie müssen auch die Zeilenhöhe der TabelleView auf die richtige Größe ändern.

Ein anderer Weg besteht darin, Ihre Zelle nur programmatisch in Ihrer EditCell-Klasse zu erstellen, was meiner Ansicht nach viel freier und präziser ist als in InterfaceBuilder:

In EditCell.m:

%Vor%

Dann erstellen Sie in Ihrem tableViewController die Zelle wie Sie es getan haben und rufen Ihr textField mit dem Tag ab.

    
ebany 16.11.2010 15:50
quelle