目前我使用这种方法填充我的细胞:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// builds the settingsView tableView
if (menuList) {
static NSString *cellIdentifier = @"coachingCell";
UITableViewCell *cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
if (!contentLoaded) {
numberOfCells = 0;
}
if (contentLoaded) {
[cell.textLabel setText:[names objectAtIndex:numberOfCells]];
NSLog(@"Entries: %@", [names objectAtIndex:numberOfCells]);
if (numberOfCells == [names count]) {
numberOfCells = 0;
}
numberOfCells ++;
}
//add a switch
coachingSwitch = [[UISwitch alloc] initWithFrame:CGRectZero];
cell.accessoryView = coachingSwitch;
[coachingSwitch setOn:YES];
return cell;
}
...
但如果我将所有内容滚动到底部然后将一个对象滚动到顶部,则会出现错误。那是因为我在柜台上填充了单元格:numberOfCells
。
现在我的问题是:如何解决这个问题,以便为我的数组执行正确的indexPath.section
和indexPath.row
?
names
数组包含:
2012-12-09 16:34:22.373 Test[18817:c07] Entries: Mein Bauchumfang
2012-12-09 16:34:22.375 Test[18817:c07] Entries: Mein Gewicht
2012-12-09 16:34:22.375 Test[18817:c07] Entries: Mein Entspannungsniveau
2012-12-09 16:34:22.376 Test[18817:c07] Entries: Häufigkeit der Entspannungsmomente
2012-12-09 16:34:22.377 Test[18817:c07] Entries: Rauchverhalten
2012-12-09 16:34:22.378 Test[18817:c07] Entries: Verlangen nach einer Zigarette
2012-12-09 16:34:22.378 Test[18817:c07] Entries: Systolischer Wert
2012-12-09 16:34:22.379 Test[18817:c07] Entries: Diastolischer Wert
2012-12-09 16:34:23.713 Test[18817:c07] Entries: Meine bewusste Ernährung mit Diabetes
2012-12-09 16:34:23.964 Test[18817:c07] Entries: Meine Blutzucker-Werte
2012-12-09 16:34:25.384 Test[18817:c07] Entries: Mein Befinden
2012-12-09 16:34:25.584 Test[18817:c07] Entries: Meine Aktivitäten
这是我也可以使用的多维数组:
2012-12-09 17:23:06.891 stuff[19161:c07] ArrayList: (
{
"Bauchumfang & Gewicht" = (
"Mein Bauchumfang",
"Mein Gewicht"
);
"Blutdruck & Puls" = (
"Systolischer Wert",
"Diastolischer Wert"
);
"Blutzucker & Diabetes" = (
"Meine bewusste Ern\U00e4hrung mit Diabetes",
"Meine Blutzucker-Werte"
);
"Mein Rauchverhalten" = (
Rauchverhalten,
"Verlangen nach einer Zigarette"
);
"Meine Stimmung" = (
"Mein Befinden",
"Meine Aktivit\U00e4ten"
);
"R\U00fccken & Bewegung" = (
"Umsetzung meiner R\U00fccken\U00fcbungen",
"Das Befinden meines R\U00fcckens",
"Meine sportlichen Aktivit\U00e4ten"
);
Schlafrhythmus = (
"Meine Schlafqualit\U00e4t",
"Mein Energieniveau"
);
"Schrittz\U00e4hler" = (
"Meine Schritte"
);
"Stress & Entspannung" = (
"Mein Entspannungsniveau",
"H\U00e4ufigkeit der Entspannungsmomente"
);
}
)
答案 0 :(得分:3)
为什么不使用indexPath.row而不是numberOfCells:
[cell.textLabel setText:[names objectAtIndex:indexPath.row]];
编辑:
您可以使用以下方法获取合适的数组索引:
int rowsUntilHere=indexPath.row;
for (int i=0;i<indexPath.section;i++){
rowsUntilHere+=[tableView numberOfRowsInSection:i];
//rowsUntilNow++; //If the array contains the section titles too
}
[cell.textLabel setText:[names objectAtIndex:rowsUntilHere]];
希望这有帮助
Hoffe das hilft