2016-07-06 16 views
0

Ich habe eine Tabellenansicht mit durchsuchbaren Daten und eine Zelle, die ein editierbares TextField enthält (editierbar mit einem PickerView). Ich verwende die PickerView, um den Abschnitt der Tabellenansicht auszuwählen, der angezeigt werden soll. Wenn jedoch eine neue Zeile in dem picker ausgewählt ist, ich will nicht die picker entlassen werden, das ist, was passiert, wenn ichTabellenansicht neu laden Mit Ausnahme einer Zelle

[self.tableView reloadData]; 

Ich habe versucht, den folgenden, das Problem zu lösen, versuchen, laden Sie die Tabelle mit Ausnahme der Zelle das Textfeld enthält:

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component 
{ 
NSIndexSet *toReload = [[NSIndexSet alloc] initWithIndex:1]; 
if (row == 0) 
{ 
    self.selectedDepartmentField.text = @"All"; 
    toReload = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, 13)]; 
} 
else 
{ 
    self.selectedDepartmentField.text = [self.departments objectAtIndex:(row - 1)]; 
} 
[self.tableView reloadSectionIndexTitles]; 
[self.tableView beginUpdates]; 
[self.tableView reloadSections:toReload withRowAnimation:UITableViewRowAnimationNone]; 
[self.tableView endUpdates]; 

Dieser stürzt mit EXC_BAD_ACCESS (Code = 1, Adresse = 0x28)

Wie soll ich über Neuladen der Daten in der Tabelle gehen die picker zu halten aktiv?

+0

Wie viele Abschnitte befinden sich in Ihrer Tabelle? – Avi

+0

Wenn das PickerView Zeile 0 auswählt, gibt es 14 Abschnitte. Wenn es in einer anderen Reihe ist, gibt es 2 Abschnitte – trumpeter201

+0

Welche Linie löst den Absturz aus? Aktivieren Sie ggf. den Ausnahmen-Haltepunkt, um dies herauszufinden. – Avi

Antwort

1

Es folgt ein möglicher Ansatz

  1. eine Reihe von NSIndexPath Setzen Sie sich mit

    NSArray *visibleIndexPaths = [self.tableView indexPathsForVisibleRows]; 
    
  2. Entfernen Sie die indexPath der Zelle mit Picker aus visibleIndexPaths.

  3. die tableview Reload folgende Methode

    [self.tableView reloadRowsAtIndexPaths:visibleIndexPaths withRowAnimation:UITableViewRowAnimationNone]; 
    

unter Verwendung dieser sollte alle sichtbaren Zellen andere als eine mit Kommissionierer nachzuladen.

+0

Dies hat bei mir nicht funktioniert, mit dem Fehler 'Versuch, Zeile 0 in Abschnitt 2 einzufügen, aber es gibt nur 2 Abschnitte nach dem Update'. Ich denke, dies kann daran liegen, dass es weniger Zeilen und Abschnitte gibt, wenn die Tabellenansicht aktualisiert wird. – trumpeter201