Ich versuche, ein UITableView eine bestimmte Anzahl von Zeilen für einen Abschnitt, aber auch wenn ich vergewissere, dass seine Datenquelle x Anzahl der Zeilen für NumberOfRowsInSection zurückgibt, die Tabellenansicht zeigt x-1.UITableView zeigt eine inkonsistente Anzahl von Zeilen im Vergleich zur Datenquelle
Die Ausnahme von diesem unerwarteten Verhalten, wenn die numberOfRowsInSection kleiner als 3
Ich habe sogar einen Haltepunkt in cellForRowAtIndexPath setzen und ich bestätigte es für die Zeile genannt wird, die nicht angezeigt wird.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (section == SectionNumber_One) {
return 6;
} else {
return self.numberOfProjectRows; // This returns x, but x-1 rows are being shown
}
}
Wenn beispielsweise self.numberOfProjectRows 5 ist, nur 4 Zeilen werden für den zweiten Abschnitt gezeigt.
Wenn ich es manuell auf 6 erhöhen, zeigt es 5 Zeilen, aber die Daten, die in der 5. Position sein sollten, ist nicht da.
Es scheint nicht zu Bildschirmgröße zu sein, wie ich es auf einem iPad mit den gleichen Ergebnissen getestet habe.
Warum passiert das? Gibt es einen anderen möglichen Modifizierer für die Anzahl der Zeilen in einem Abschnitt?
Ich füge einen Screenshot an, wenn es hilft.
EDIT - Hier sind meine Delegatmethoden:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// Cell with reuse identifier setup
if (section == SectionNumber_One) {
// cell setup for section one that's showing up ok
} else if (section == SectionNumber_Two) {
UITextField *projectField = cell.projectTextField;
if ([self.userProjectKeys count] > row) {
projectField.text = self.availableProjects[self.userProjectKeys[row]];
}
}
return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
// Hide the password row for existing users
if (indexPath.row == FieldTag_Password && ![self.user.key vol_isStringEmpty]) {
return 0.0f;
} else {
return UITableViewAutomaticDimension;
}
}
Können Sie mehr von Ihrem Viewcontroller-Code zeigen? –
Das Problem liegt wahrscheinlich nicht in Ihren Datenquellenmethoden, sondern in Ihren Delegiertenmethoden. Wenn Sie keine korrekte Höhe für die Zelle zurückgeben, wird sie nicht angezeigt. ** Sie müssen den Code zu Ihren tatsächlichen Delegate-Methoden zu Ihrer Frage hinzufügen **, wo Sie die Höhe der Zelle festlegen, wenn Sie weitere Hilfe benötigen. Es spielt keine Rolle, wenn Sie 1000 Zellen in Ihre Datenquelle schreiben. Wenn Sie die Höhe nicht zurückgeben, werden sie nicht angezeigt. Sie sollten den cellForRow-Methoden auch Code hinzufügen. –
@Sneak Vielen Dank !!! Du hast den Nagel auf den Kopf getroffen. Ich änderte die Höhe einer Reihe, dachte nur an Abschnitt 0 und vergaß, dass es auch Abschnitt 1 ändern würde. –