2009-07-21 17 views
1

aufgerufen Ich werde direkt von einem ex beginnen: Ich habe zwei Klassen A und B, beide sind von UITableViewController abgeleitet.reloadData Methode nicht von einer anderen Klasse

Ich habe sie auch in Navigation Controller hinzugefügt, so dass Navigation von A nach B geht. Diese beiden Klassen verwenden Datenbank zum Anzeigen von Daten in der Tabelle. Jetzt lösche ich in der B-Ansicht eine Zeile aus der DB und in einer Ansicht wird die Zeilenanzahl dieser DB-Tabelle angezeigt. Nun, was ich tue, ist auf der BACK-Taste des Navigations Ich möchte ich diese Methode nenne 1 TRY:

//in class B 
-(IBAction)backBtnPressed 
{ 
[ObjA.tbleView reloadData]; 
[self.navigationController popViewControllerAnitmated:YES]; 
} 

auf seine Wirkung. Das Problem ist, dass diese Methode die Daten von Ansicht A nicht neu lädt. Das heißt, sie ruft die Delegierungsmethoden von tbleView wie cellForIndexPath ... usw. nicht auf. Dann dachte ich, dass kann die reload shud aus der gleichen Klasse aufgerufen werden, so tat dies VERSUCH 2:

//in class B 
-(IBAction)backBtnPressed 
{ 
[ObjA.tbleView myReloadData]; 
[self.navigationController popViewControllerAnitmated:YES]; 
} 
//Class A 
-(void)myReloadData 
{ 
[self.tbleView reloadData]; 
} 

Es in diesem Verfahren kommt aber immer noch nicht die Tableview Delegatmethoden nicht nennen. Bitte lassen Sie mich wissen, warum ich nicht in der Lage bin diese dumme Sache zu tun :(. Grüße .. Amit

Antwort

1

Haben Sie die UITableView verbunden ist delegate und dataSource Stellen korrekt (entweder in Ihrer Feder oder Code, je nach ?, wie Sie die Tabelle erstellen)

+0

Ja, ich habe die Tableview Steuerelement mit der Datei-Besitzer auf der XIB-Datei verbunden ist auch durch Code verwendet diesen. Codezeile: - (void) viewDidLoad { self.title = NSLocalizedString (@ "Meine Arbeitsliste", @ "WorkListViewController-Titel"); self.tblObj.delegate = selbst; self.tblObj.dataSource = self; self.tblObj.rowHeight = 65; self.tblObj.separatorStyle = UITableViewCellSeparatorStyleSingleLine; self.tblObj.sectionHeaderHeight = 0; } – AmJa

0

Sie nah dran sind, setzen Sie diese in der Klasse A:

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 
    [self.tableView reloadData]; 
} 
+0

Danke, aber schon versucht, dies zu tun, aber meine ViewWillAppear-Methode wird nicht aufgerufen. Ich habe viel versucht, aber ich weiß nicht, warum diese Methode nicht automatisch aufgerufen wird: o (. – AmJa

Verwandte Themen