Tableview füllt sich nicht mit den Daten

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

  • Tableview füllt sich nicht mit den Daten

    Hallo zusammen,

    ich stelle euch mal wieder eine Anfängerfrage (-;
    Ich lese mir gerade ein Buch durch um in die Iphone Programmierung reinzukommen. Das Buch was ich lese basiert auf Xcode 3 also nicht das aktuellste und dementsprechend habe ich nicht ganz den Durchblick in Hinsicht auf Xcode 4.
    Nun zu meinem Problem, ich habe eine Master-Detail-Application erstellt mit Storyboard-Support und möchte nun die Tabelle von dem MasterViewController (mein MasterViewController habe ich in DirectoryViewController umbenannt) füllen. Über die Methoden cellForRowAtIndexPath und numberOfRowsInSection kann ich wunderbar mit manuellen eingaben die Tabelle füllen. Sobald ich aber versuche die Tabelle über Instanzvariablen zu füllen zeigt die Tabell nichts mehr an. Hier einmal Code Ausschnitte:

    Quellcode

    1. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    2. return [self.directoryContents count];
    3. }
    4. - (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    5. static NSString *CellIdentifier = @"Cell";
    6. UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    7. if (cell == nil) {
    8. cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    9. }
    10. cell.textLabel.text = (NSString*)[directoryContents objectAtIndex:indexPath.row];
    11. return cell;
    12. }
    Alles anzeigen




    Quellcode

    1. - (NSString*)directoryPath {
    2. return directoryPath;
    3. }
    4. - (void)loadDirectoryContents {
    5. [directoryContents release];
    6. directoryContents = [[NSFileManager defaultManager] directoryContentsAtPath:directoryPath];
    7. [directoryPath retain];
    8. }
    9. - (void)setDirectoryPath:(NSString *)p {
    10. [p retain];
    11. [directoryPath release];
    12. directoryPath = p;
    13. [self loadDirectoryContents];
    14. // Titel des Nav Controller mit dem letzen Pfadelement setzen
    15. NSString* pathTitle = [directoryPath lastPathComponent];
    16. self.title = pathTitle;
    17. }
    Alles anzeigen




    Im Appdelegate habe ich ein Outlet auf den MasterViewController. Und habe im Storyboard ein NSObject dem Dokumentfenster hinzugefügt, von der Klasse AppDelegate abgeleitet und das Outlet des ViewControllers gesetzt. in AppDelegate.m habe ich folgendes aufgerufen:

    Quellcode

    1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    2. {
    3. directoryViewController.directoryPath = NSHomeDirectory();
    4. return YES;
    5. }




    Die App sollte 4 Verzeichnisse in der Tabelle auflisten was sie nicht tut nur warum?


    Gruß
  • Hallo Bayer,

    ich habe ein NSLog eingebaut und ja er ruft die Methode auf... Woran kann es denn liegen ich habe schon den ganzen Tag probiert und es funktioniert einfach nicht soll ich vielleicht mal das Projekt hochladen?

    Edit: Ich habe gerade eben in der Methode cellForRowAtIndexPath ein NSLog gemacht und diese Methode wird wohl tatsächlich nicht aufgerufen.
  • Das Ding ist sicherlich nil.
    Somit ist die Anzahl 0 und es muss auch keine Cell erstellt werden.

    Ja das ist tatsächlich nil. Wenn ich jedoch folgende Methode umschreibe zeigt die TableView 1 Eintrag an. Jetzt bin ich schonmal weiter danke dir.

    Quellcode

    1. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    2. directoryPath = NSHomeDirectory();
    3. directoryContents = [NSArray arrayWithObject:directoryPath];
    4. NSLog(@"%d", [self.directoryContents count]);
    5. return [self.directoryContents count];
    6. }

    Doch warum nimmt er nicht den im AppDelegate festgelegten Path?