2010-12-07 1 views
1

Gibt es eine Möglichkeit, den Wert einer Zelle nach dem Laden zu ändern? tatsächlich habe ich ein Textfeld in der Tabelle und nachdem ich den Wert des gleichen eingefügt habe, muss ich einige numerische Operationen auf dem Textfeldwert durchführen und der Wertberechner muss auf dem Etikett anzeigen, dass in der nächsten Zelle.Wie ändert man den Wert einer Zelle nach dem Neuladen in Ziel c?

Wie kann ich das gleiche Ergebnis bekommen?

Vielen Dank im Voraus.

+0

das Etikett erstellt Laufzeit? – KingofBliss

+0

Ich konnte nicht verstehen, wo dein Problem ist. Müssen Sie den Text eines UITextFields aktualisieren, und dieses Textfeld befindet sich in einer Zelle, auf die Sie keinen Bezug haben? – AYBABTU

+0

Ja, es wird zur Laufzeit erstellt. In der cellForRowAtIndexPath-Methode übergebe ich einen Wert im Textfeld, der in der Beschriftung in der nächsten Zelle enthalten sein sollte. Der Textfeldwert sollte so bleiben wie er ist, und der Label-Wert sollte von 0 zu etwas wechseln. – Sarah

Antwort

3

Es gibt mehrere Möglichkeiten, eine Zelle in einer UITableView zu aktualisieren.

1) Rufen Sie die Tabellensichtmethode reloadRowsAtIndexPaths:withRowAnimation: auf. Dies löst einen Aufruf der Delegate-Methode tableView:cellForRowAtIndexPath: aus. Wenn Sie eine Datenquelle haben, die Sie aktualisieren, wäre dies eine gute Möglichkeit, eine Zelle zu aktualisieren.

NSIndexPath *indexPathOfUpdatedCell = ... 
[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPathOfUpdatedCell] withRowAnimation:UITableViewRowAnimationFade]; 

2) Es ist auch möglich, die Zelle direkt zu aktualisieren. Sie können cellForRowAtIndexPath: verwenden.

NSIndexPath *indexPathOfUpdatedCell = ... 
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPathOfUpdatedCell]; 
cell.textLabel.text = @"new value"; 

Um einen Indexpfad für eine bestimmte Zeile und des Abschnitts ist es möglich, zu erstellen indexPathForRow:inSection zu verwenden.

NSUInteger row = ... 
NSUInteger section = ... 
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row inSection:section]; 
+0

Vielen Dank für die Hilfe, aber können Sie mir sagen, wie ich den Zeilenindex im NSIndexPath * indexPathOfUpdatedCell übergeben kann. Ich habe versucht, indexAtPosition, aber ich bekomme kein bestimmtes Format. – Sarah

+0

Vielen Dank Robert für die Lösung. – Sarah

1

Für das, was Sie versuchen, die beste Wahl zu tun ist, Ihre View-Controller eine <UITextFieldDelegate>, stellen Sie Ihre Zelle Textfeld Delegaten selbst zu machen, und dann die textFieldDidEndEditing implementieren: Methode delegieren.

ändern Schnittstellendatei das Protokoll

@interface YourViewController : UIViewController <UITextFieldDelegate> 

Dann stellen Sie den View-Controller als Delegierter des relevanten UITextField (s) ...

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    ... 
    yourCustomCell.yourTextField.delegate = self 
} 

zu übernehmen und schließlich umzusetzen

- (void) textFieldDidEndEditing:(UITextField *)textField. 

Diese Methode wird jedes Mal aufgerufen, wenn der Benutzer die Bearbeitung von UITextField beendet, a Wenn Sie einen Verweis darauf übergeben, können Sie auf die Werte zugreifen, eine eventuell erforderliche Validierung durchführen und sie dem Textfeld zuweisen.

+0

oh danke, das ist eine großartige Möglichkeit zu implementieren. – Sarah

Verwandte Themen