IB und Tableview

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • IB und Tableview

    Hallo Community,

    ich dreh gleich am Rad. Folgendes Problem:

    Quellcode

    1. 2012-05-08 11:03:42.992 infoterm[788:f803] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "NewsViewController" nib but the view outlet was not set.'
    2. *** First throw call stack:
    3. (0x13cf022 0x1560cd6 0x1377a48 0x13779b9 0xe02dd 0xe0779 0xe099b 0xe0d11 0xf28fd 0xf2aef 0xf2dbb 0xf385f 0xf3e06 0x6f6a52d 0xf3a24 0x2711 0x13d0e99 0x1c14e 0x1c0e6 0xc2ade 0xc2fa7 0xc2266 0x413c0 0x415e6 0x27dc4 0x1b634 0x12b9ef5 0x13a3195 0x1307ff2 0x13068da 0x1305d84 0x1305c9b 0x12b87d8 0x12b888a 0x19626 0x1c8d 0x1bf5)
    4. terminate called throwing an exception


    Ich habe ein Delegate (UiTableViewdelegate und datasource ) in meinem ViewController deklariert. Die Tabelle habe ich im Code gefüllt, soweit so gut.
    Wenn ich im Interfacebuilder aber mein Tableview mit einem iBoutlet verbinde bringt er mir die o.g Fehlermeldung. Verknüpfe ich es mit dem View, dann funktioniert alles.

    iBoutlet wurde deklariert! Synthetisiert wurde es auch....

    Wieso dann die Fehlermeldung?
    lernen, lernen, lernen :)
  • UIViewController hat ein Outlet view, welches im IB mit dem Main View für diesen ViewController verbunden werden muss. Der ViewController muss ja schliesslich wissen, welcher View in dem XIB der Main View sein soll. Du musst also das Outlet view vom ViewController im IB mit dem Main View verbinden.
  • danke für die schnelle Antwort.
    Ich habe ein Tableview im Interfacebuilder auf mein View gelegt.
    Dann habe ich per Assist. meinen erstellten Tableview als iBoutlet in meinen Header deklariert.
    Anschließend die Property definiert und in der Implementation die Synthesize durchgeführt.

    Wenn ich die Verbindung von Tableview auf view setze, dann funktioniert alles einwandfrei.
    Verknüpfe ich es aber mit meinem Tableview im Interface wirft er die Exception.
    lernen, lernen, lernen :)
  • Wenn Du im IB das TableView mit einem selbst deklarierten IBOutLet verbindest, dann hat der ViewController kein View mehr. 2 Möglichkeiten:

    Dein Viewcontroller leitet von UITableViewController ab, dann muss auch das tableView mit dem View verbunden sein und du darfst kein eigenes OutLet erstellen sondenr must über self.tableview gehen

    oder

    Dein ViewController leitet von UIViewController ab, dann must Du dein TableView im XIB in ein normales View einbetten und dann das normale View mit dem View deines ViewControllers verbinden und kannst das TableView dann mit einem eigenen Outlet verbinden

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Deutsch ist wohl nicht meine Stärke -.-

    Dein ViewController leitet von UIViewController ab, dann must Du dein TableView im XIB in ein normales View einbetten und dann das normale View mit dem View deines ViewControllers verbinden und kannst das TableView dann mit einem eigenen Outlet verbinden


    Ich habe im Interfacebuilder in meiner betroffenen XIB ein zusätzliches normales View in meinem vorhandenem View erstellt. Dann habe in diesem erstellten View ein Tableview hingesetzt. (soweit richtig?)
    Wie kann ich jetzt das neue View mit dem View meines ViewControllers verbinden? Mit ctrl und einer Ziehbewegung von dem erstellten View zu dem vorhandenen View öffnet mir ein Kontextmenü mit Datasource und Delegate. Müssen diese aber nicht mit dem Files Owner verknüpft sein?
    lernen, lernen, lernen :)
  • also:
    du hast einen normalen ViewController.

    Von diesem öffnest du die xib - Datei.
    Schmeiss mal davon alles raus.
    Dann ziehst du erst einen normalen View darauf, diesen verbindest du dann mit dem Files Owner als View-Outlet.
    Auf diesen View kannst du dann deinen TableView legen und diesen als dein eigenes Outlet verknüpfen und entsprechend Delegate/Datasource