2008-09-25 13 views
9

Ich bin sehr früh in der iPhone-Entwicklung Lernprozess. Ich versuche, verschiedene Teile zu verstehen. Im Moment habe ich einfach die grundlegende NavigationController Vorlage genommen und ich versuche eine einfache gruppierte Tabellenansicht mit ein paar Textfeldern zu erstellen. Was ich scheinbar nicht tun kann, ist, den Interface Builder dazu zu bringen, dass ich eine UITableViewCell in eine UITableView fallen lasse, damit ich dann ein Textfeld zur Zelle hinzufügen kann. Ist dies sogar möglich (es scheint, dass es die Tatsache gegeben sein sollte, dass UITableViewCell eine ziehbare Kontrolle ist)?Verwendung von Interface Builder für UITableViews

Wenn nicht, bedeutet das, dass all das Code ist, den ich brauche, um mich selbst zu schreiben?

Antwort

17

Sie können die Zelle mit Interface Builder erstellen, aber Sie müssen es zu einem übergeordneten Objekt und nicht zu einem Kind der Tabellenansicht machen. Dann können Sie diese Zelle in der tableView: cellForRowAtIndexPath: Funktion Ihres View-Controllers zurückgeben.

Sicherstellen, dass die Zelle eine Kennung im Interface Builder und dann mit dem gleichen Bezeichner mit dequeueReusableCellWithIdentifier geben: (siehe Beispielcode für, wie das funktioniert - die Idee ist, dass die Zellen wieder gewöhnen - die Das Betriebssystem teilt nur so viele Zellen zu, wie auf dem Bildschirm Platz finden. Cleverer Weg, um Speicher zu sparen.)

1

Leider funktioniert es nicht wirklich so - die Zellen in der Tabellenansicht werden vom Delegaten zur Laufzeit generiert. Es erweist sich jedoch als sehr einfacher Code. Sehen Sie sich den Beispielcode für die Tabellenansicht an. Es ist ziemlich einfach zu folgen.

6

Seien Sie vorsichtig mit der Methode Boot To The Head. Sie werden leckt, wenn Sie nicht richtig mit Ihrem IBOutlets umgehen. Ich werde versuchen, dies so gut wie möglich zu erklären, ohne Code (NDA) zu veröffentlichen. Wenn Sie beabsichtigen, IB zu verwenden, um Ihre Zelle zu erstellen, machen Sie die UITableViewCell eigene XIB-Datei. Legen Sie den Besitzer der Datei als Ihre UIViewController Unterklasse (oder UITableController) fest. Rufen Sie die IBOutlet so etwas wie UITableViewCell *cellFactory. In der UITableViewDataSource Methode tableView:cellForRowAtIndexPath: machen Sie den folgenden Pseudocode;

  1. Versuchen Sie, eine Zelle mit der Kennung Sie Setup in IB
  2. aus der Warteschlange entfernt Wenn dies gelingt, fertig. Verwenden Sie einfach die Zelle
  3. Sonst müssen Sie eine neue Zelle erstellen. Verwenden Sie die [NSBundle mainBundle] loadNibNamed:owner:options: Methode mit Ihrer richtigen XIB-Datei dort. Dadurch wird der CellFactory-Ivar mit einer neuen Zelle gefüllt. Hier kommt der knifflige Teil.
  4. set cell = cellFactory dann release cellFactory und setzen Sie es auf Null, um sicherzustellen, dass Sie es nicht versehentlich erneut verwenden. Sie sind jetzt sicher für Ihr Handy als normale