Erstellen einer nib-Datei für eine Tabelle, View-Controller

Ich versuchte zu Folgen, die Table View Programming Guide for iPhone OS aber hatte Schwierigkeiten beim erstellen einer neuen Tabelle, View-Controller, lädt seine Daten aus einer nib-Datei.

Speziell, ich versuchte, führen Sie die Schritte in dieses Teil:

Wenn Sie es vorziehen, laden Sie die Tabelle anzeigen
verwaltet durch eine eigene Tabelle-Ansicht
controller aus einer nib-Datei, müssen Sie
das folgende tun:

  1. Im Interface Builder erstellen, eine leere Cocoa Touch nib-Datei (Datei >
    Neue).
  2. Ziehen Sie ein UITableViewController-Objekt aus dem Interface Builder
    Bibliothek in der nib-Dokument-Fenster.
  3. Speichern Sie die nib-Datei in Ihrem Projekt-Verzeichnis unter einem geeigneten Namen
    und, wenn Sie dazu aufgefordert werden, wählen Sie Ihre
    Projekts haben sich die nib-Datei Hinzugefügt
    es.
  4. Wählen Sie Tabelle-View-Controller in der nib-Dokument-Fenster und öffnen Sie die
    Identity Bereich der Inspektor. Set
    die Klasse, um Ihre benutzerdefinierte Tabelle-Ansicht
    controller-Klasse.
  5. Wählen Sie "File' s Owner der nib-Dokument-Fenster, und legen Sie seine Klasse
    Identität, um die benutzerdefinierte Tabelle-Ansicht
    controller-Klasse.
  6. Anpassen, die das table view im Interface Builder.
  7. Wählen Sie das table-view-controller in der nib-Dokument-Fenster, öffnen Sie die
    Attribute-Bereich des Fensters "Informationen", und
    eingeben (oder auswählen) die Namen der nib
    Datei in der Spitze des Feldes.

So, ich habe eine neue UITableViewController subclass in Xcode (genannt "MyTableViewController"), dann ging ich in IB und befolgt die Schritte. Ich stellte sicher, zu verknüpfen alle Klasse Attribute den gleichen Namen wie die UITableViewController subclass ich in Xcode, wie es sagt, in die Schritte.

Aber jetzt bekomme ich die folgende Warnung in IB:

"My Table View Controller" sowohl mit seinen
"Blick" und "Nib-Name" - Eigenschaften gesetzt.
Diese Konfiguration wird nicht unterstützt.

Wenn ich die Anwendung ausführen, und drücken Sie den table view controller, es erscheint aber, wie es scheint, nichts wird geladen, aus der nib-Datei (wie ich den alpha-Wert auf 0 statt 1).

Eine Idee, was ich falsch mache?

Danke für die Hilfe.


Hier einige weitere Informationen, die Ihnen helfen könnten zu verstehen, die situation zu verbessern.

Ich bemerkte ein paar Unterschiede zwischen dem erstellen einer UITableViewController mit der Vorlage (z.B. durch Schaffung einer neuen Navigation-basierte Anwendung) vs. die Schaffung eines sich selbst (z.B. nach der oben genannten Schritte). Ich werde sich auf jeden als TemplateNib und CustomNib, beziehungsweise, um es einfacher zu machen zu verstehen, die Unterschiede.

In TemplateNib, hat es die folgenden Objekte in das Dokument-Fenster:

  • File ' s Owner
  • First Responder
  • Tabelle Anzeigen

In CustomNib, hat es die folgenden Objekte in das Dokument-Fenster:

  • File ' s Owner
  • First Responder
  • Meine Custom Table View Controller
    • Tabelle Anzeigen

Weiterer Unterschied ist in dem File ' s Owner-links...

TemplateNib die File ' s Owner:

  • Outlets
  • tableView -> Tabelle Anzeigen
  • Ansicht -> Tabelle Anzeigen
  • Referencing Outlets
  • dataSource -> Tabelle Anzeigen
  • delegieren -> Tabelle Anzeigen

CustomNib File ' s Owner:

  • Outlets
  • Ansicht -> (nichts)

CustomNib Meinem Tisch View-Controller:

  • Outlets
  • Ansicht -> Tabellen-Ansicht (diese ist Grau unterlegt, so kann man nicht löschen)
  • Referencing Outlets
  • dataSource -> Tabelle Anzeigen
  • delegieren -> Tabelle Anzeigen

Update:

Habe ich versucht zu imitieren die .xib-Datei, die erstellt wird, von der Vorlage, indem Sie die folgenden Schritte aus:

  1. Erstellt eine leere Datei im Interface Builder.
  2. Satz der Besitzer der Datei auf die Klasse, die erbt von UITableViewController.
  3. Hinzugefügt eine Tabelle Anzeigen, um das Dokument-Fenster.
  4. Gesetzt, die das Table View dataSource und delegate File ' s Owner.
  5. Satz der Besitzer der Datei-Ansicht, um die Tabelle Anzuzeigen.
  6. Hinzugefügt tableView Anwesen im Identity-Bereich von Typ UITableView.
  7. Satz der Besitzer der Datei tableView-Eigenschaft (die die ich gerade erstellt), um die Tabelle Anzuzeigen.

Dies aber immer noch scheint, wie es wird nicht geladen, es aus der NIB-Datei. (Ich habe auch nie den Namen der NIB-Datei überall obwohl... gibt es überall, die ich brauche, um es oder sieht es für eins mit dem gleichen Namen?).

Dann habe ich versucht, überschreiben initWithNibName zu laden von den Namen der nib-Datei, und jetzt scheint es zu laden es aus der nib-Datei. Allerdings, wenn ich Blick auf die .m-Datei des TemplateNib table view controller, es braucht nicht, diese Methode außer Kraft setzen, wieso ist das so? Ich denke immer noch, ich mache es der falsche Weg, verursachen Sie den Programming Guide nicht erwähnt hat, etwas über es zu tun auf diese Weise.


Update:

Habe ich versucht den Vergleich der beiden .xib-Dateien mit einem diff-tool, der einzige wesentliche Unterschied zwischen den beiden scheint zu sein:

<string key="superclassName">UITableViewController</string>
//and:
<reference key="NSSuperview"/>

Ich don ' T sehen jede Bezugnahme auf die Nib-Datei in die original Datei irgendwo, sind es andere Dateien, die ich überprüfen sollte?


Update:

Scheint es, wie die Sache, dass macht TemplateNib Last aus der nib-Datei, die im Hauptfenster.xib (default-name durch die Vorlage), RootViewController Hinzugefügt, mit der Spitze die Eigenschaft Name mit dem Wert "RootViewController". Zusätzlich, Ihre Klasse ist auf "RootViewController".

Habe ich versucht, indem Sie einen Haltepunkt in beiden initWithNibName:bundle: und initWithStyle: auf der RootViewController, aber es wird nie dort. Ich bin irgendwie Fragen, wie der TableViewController erstellt wird, wenn Sie es in das Hauptfenster.xib-so.

Ich auch versucht, indem die my custom table view controller MainWindow.xib, Einstellung der Klasse und Feder-Namen in der Hoffnung, dass es geladen wird es aus der nib-Datei, die ich angegeben, aber es funktioniert noch nicht nennen iniWithNibName.

Ich habe gerade laufen in den selben Fehler. Hat jemand einen Weg die Datei zu reparieren, ohne neu zu erstellen?
Vielen Dank, sehr nützliche

InformationsquelleAutor Senseful | 2009-10-07

Schreibe einen Kommentar