3 Stimmen

Problem beim Laden von UITableView in einer Navigation-basierten App

In der Navigation-basierten App, wenn ich versuche, eine andere Ansicht zu laden, die eine UITableView implementiert hat, verwende ich initWithNibName:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    UIViewController *detailsViewController = [[UIViewController alloc] initWithNibName:@"bloop2ViewController" bundle:nil];
    [[self navigationController] pushViewController:detailsViewController animated:YES];
    [detailsViewController release];
}

Nachdem ich auf die Zelle des UITableView geklickt habe, erhalte ich:

2009-06-13 11:44:41.089 Bloop[75227:20b] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key tableView.' 2009-06-13 11:44:41.092 Bloop[75227:20b] Stack: ( 807902715, 2429103675, 808061681, 810717848, 810716389, 816538544, 807805711, 816533170, 816541363, 815230552, 815224116, 815223834, 815217291, 815258907, 815254969, 815262662, 815243017, 815265053, 815242666, 11044, 815018240, 815005661, 810768858, 807687328, 807683624, 839142449, 839142646, 814752238, 9088, 8942 )

Aber wenn ich die UITableView in InterfaceBuilder trenne, wird die Ansicht ohne Probleme geladen (außer dass es keine Möglichkeit gibt, Daten darin zu übergeben).

Die Implementierung der UITableView ist korrekt - ich habe es in einem neuen XCode-Projekt ausprobiert, und es hat einwandfrei funktioniert.

6voto

nschmidt Punkte 2383

Die Fehlermeldung besagt, dass Sie versuchen, die Eigenschaft "tableView" auf einem Objekt des Typs UIViewController zu setzen, das sie nicht hat. Ich rate nur, aber vielleicht haben Sie einen abgeleiteten ViewController in Ihrer Nib-Datei, der die Eigenschaft tableView hat, aber dann konstruieren Sie nicht Ihr abgeleitetes Objekt, sondern ein UIViewController. Sie sollten es versuchen:

MyTableViewController *detailsViewController = [[MyTableViewController alloc] initWithNibName:@"bloop2ViewController" bundle:nil];

0 Stimmen

Funktioniert wie ein Zauber... Ich habe den ganzen Tag damit verbracht, das nachzuvollziehen, ich schulde dir wirklich :) Danke nochmal und mach's gut!

0 Stimmen

Auch gerade 2 Stunden damit verbracht, diesen Fehler zu finden. Danke für diese Antwort.

0 Stimmen

2 Jahre später, du hast meinen Tag gerettet, danke :)

0voto

nornagon Punkte 14659

Ich hatte dieses Problem und die Lösung bestand darin, sicherzustellen, dass beides

  1. Ich den NIB-Namen im View-Controller unterhalb der Tab-Leiste im Hauptfenster-XIB eingestellt habe und
  2. der Klassenname im Unter-ViewController eingestellt war.

Diese Seite war für mich hilfreich.

0voto

Chris Lacy Punkte 4047

Ich habe gerade dieses Problem erlebt. In meinem Fall wurde der Implementierungscode für MyTableViewController von der aktuellen Build-Konfiguration ausgeschlossen. Hoffentlich hilft das jemandem.

0voto

David Gish Punkte 720

Noch eine Möglichkeit, wie das schiefgehen kann. Ich hatte das xib für eine Ansicht weggeworfen und von vorne angefangen. Egal was ich tat, die Ansicht warf diese Ausnahme beim Laden. Nachdem ich mir stundenlang die Haare gerauft hatte, habe ich schließlich die App aus dem Simulator gelöscht und das hat es behoben. Irgendwie wurde das alte xib bei der Installation nicht ersetzt.

0voto

Mário Carvalho Punkte 3026

Nach 2 Stunden habe ich vergessen zu

@synthesize tableView = _tableView;

Ich hoffe, es hilft

Mário

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X