Tabellenansicht Neu Laden Abschnitten Stürzt Ab

Ich habe einen table view mit 4 Sektionen und 1-2 Tabellenansicht Zellen pro Sektion. Die erste Zelle hat einen uiswitch als Zubehör Ansicht und steuert das Farb-theme der app, das Umschalten zwischen Tag-Modus und Nacht-Modus. Sobald der Schalter getroffen wird, eine Funktion aufgerufen wird, ändern Sie die Farben der nav-bar und Hintergrundfarbe. In dieser Funktion habe ich auch die Zeile

[self.tableview reloadData];

aktualisieren, die Tabelle selbst mit den neuen Farben. Es funktioniert gut, aber es gibt keine animation, so benutzte ich diese statt

[self.tableView reloadSections:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 3)] withRowAnimation:UITableViewRowAnimationFade];

Wenn die Zeile verwendet wird, der Schalter klemmt und die app friert ein. Es stürzt nicht ab pro sagen, D. H. es ist kein crash-log, ist es nur friert und die uiswitch Stoppt die Mitte der animation.

Bemerkte ich, dass ich die reload-Abschnitte, die keine Zellen enthalten, Zubehör-Ansichten und es funktioniert perfekt mit der fade-animation. I. e. dies funktioniert

[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:2] withRowAnimation:UITableViewRowAnimationFade];

Weil der Dritte Abschnitt nicht alle Zellen mit Zubehör-Ansichten. Aber jeder Abschnitt, der eine Zelle, die enthält ein Zubehör-anzeigen (d.h. Abschnitte 0 und 2) wenn ich das versuchen, und laden Sie die app friert ein.

Irgendwelche Ideen, warum dies geschieht? Unten ist mein cellForRowAtIndexPath

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *cellIdentifier;
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:cellIdentifier];

if (indexPath.section == 0) {

    cell.textLabel.text = [section0 objectAtIndex:indexPath.row];
    cell.accessoryType = UITableViewCellAccessoryNone;
    cell.selectionStyle = UITableViewCellSelectionStyleNone;

    if (indexPath.row == 0) {

        cell.accessoryView = colorSchemeSwitch;
    }

    else if (indexPath.row == 1) {

        cell.accessoryView = autoLockSwitch;
    }
}

else if (indexPath.section == 1) {

    cell.textLabel.text = [section1 objectAtIndex:indexPath.row];
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}

else if (indexPath.section == 2) {

    cell.textLabel.text = [section2 objectAtIndex:indexPath.row];
    cell.accessoryType = UITableViewCellAccessoryNone;
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    cell.detailTextLabel.text = [NSString stringWithFormat:@"%i \t", (int)app.fontSize];
    fontSizeSlider.value = app.fontSize;
    cell.accessoryView = fontSizeSlider;
}

else if (indexPath.section == 3) {

    cell.textLabel.text = [section3 objectAtIndex:indexPath.row];
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    cell.detailTextLabel.text = app.color;
}

cell.backgroundColor = app.cellBackgroundColor;
cell.textLabel.textColor = app.textColor;
UIView *backgroundColorView = [[UIView alloc] init];
backgroundColorView.backgroundColor = app.cellSelectedColor;
[cell setSelectedBackgroundView:backgroundColorView];

return cell;
}
  • Fügen Sie die Crash-Log-in auf Ihre Frage.
  • Es ist wirklich Bizarr, es ist kein crash-log, die app friert ein, es stürzt nicht ab. Der Schalter klemmt in der Mitte und die app reagiert nicht mehr. Kein crash-log
  • irgendwelche Vorschläge?
  • Verwalten Sie Objekte der Tabellenzelle. Und Vermeiden Sie viel Berechnung in CellForRawAtIndexPath: Methode. Halten, die so einfach, wie Sie können.
InformationsquelleAutor jcooper_82 | 2014-11-05
Schreibe einen Kommentar