- Registriert
- 13.12.09
- Beiträge
- 266
Hallo zusammen,
Ich starte in meiner App mit einem UIViewController der einen TableView enthält (kein UITableViewController)
Des weiteren hab ich eine Klasse Mitarbeiter mit den Attributen Name, Vorname und Alter. In dem TableView werden die Vornamen der Personen angezeigt. Wählt man eine Person, wird durch einen Segue ein DetailViewController (auch ein UIViewController) aufgerufen und dort durch UILabels noch der Nachname und das Alter angezeigt. Also eigentlich alles ganz Simpel.
Ich habe jezt aber das Problem das
vor der Delegate-Methode
aufgerufen wird.
Ich poste erstmal nicht dem kompletten Code der Übersicht wegen.
Hier meine prepareForSegue-Methode
Meine didSelectRowAtIndexPath- Methode sieht so aus:
mit = Ein Objekt der Klasse Mitarbeiter.
Das NSLog sagt mir das die Attribute auch Werte haben und nicht NULL sind.
Das Problem ist jetzt das zuerst die prepareForSegue-Methode aufgerufen wird, also ist dort mit.firstName = NULL. Dementsprechend zeigen die Labels im DetailViewController auch nix an. Wähle ich einen anderen Eintrag aus der Tabelle, zeigen die Labels die Werte des letzten Eintrags an logischer Weise, aber wie kann ich das Problem jetzt lösen.
Ich habe mir ein anderes Beispiel was ich gemacht hatte schonmal angeschaut, da hab ich es genau so gelöst, Allerdings hatte ich dort einen echten UITableViewController aber macht das solch einen Unterschied? Ich hoffe ihr könnt mir helfen.
Ich starte in meiner App mit einem UIViewController der einen TableView enthält (kein UITableViewController)
Des weiteren hab ich eine Klasse Mitarbeiter mit den Attributen Name, Vorname und Alter. In dem TableView werden die Vornamen der Personen angezeigt. Wählt man eine Person, wird durch einen Segue ein DetailViewController (auch ein UIViewController) aufgerufen und dort durch UILabels noch der Nachname und das Alter angezeigt. Also eigentlich alles ganz Simpel.
Ich habe jezt aber das Problem das
Code:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
Code:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
Ich poste erstmal nicht dem kompletten Code der Übersicht wegen.
Hier meine prepareForSegue-Methode
Code:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([segue.identifier isEqualToString:@"detailSegue"])
{
NSLog(@"Name in Segue : %@", mit.firstName);
[segue.destinationViewController setAngestellter:mit];
}
}
Meine didSelectRowAtIndexPath- Methode sieht so aus:
Code:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
mit = [sortedArray objectAtIndex:indexPath.row];
NSLog(@"Row %d selected with Value %@", indexPath.row, mit.firstName);
}
Das NSLog sagt mir das die Attribute auch Werte haben und nicht NULL sind.
Das Problem ist jetzt das zuerst die prepareForSegue-Methode aufgerufen wird, also ist dort mit.firstName = NULL. Dementsprechend zeigen die Labels im DetailViewController auch nix an. Wähle ich einen anderen Eintrag aus der Tabelle, zeigen die Labels die Werte des letzten Eintrags an logischer Weise, aber wie kann ich das Problem jetzt lösen.
Ich habe mir ein anderes Beispiel was ich gemacht hatte schonmal angeschaut, da hab ich es genau so gelöst, Allerdings hatte ich dort einen echten UITableViewController aber macht das solch einen Unterschied? Ich hoffe ihr könnt mir helfen.