Les heures et les heures passées et aucune utilisation. Je ne comprends pas si je n'ai pas été efficace dans la recherche (googling) ou est-ce qu'il y a moins de questions à ce sujet ou J'ai peut-être commis une erreur en mettant en œuvre les réponses des experts!Définir une coche pour chaque section dans UITableView et enregistrer son état
Je sais qu'il y a plusieurs questions sur le réglage du type d'accessoire coche pour une ligne et aucun pour les autres lignes dans une section, les messages tracés here et there.
J'ai par défaut deux sections dans mon tableau. Par défaut, je veux que la première rangée de chaque section soit sélectionnée, c.-à-d. Avec la coche de l'accessoire. visible sur la ligne sélectionnée only.I ont essayé de déclarer deux chemins d'index pour garder la trace de la sélection de la ligne dans chaque section.Here est mon code de mise en œuvre:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *cellIdentifier = [NSString stringWithFormat:@"S%1dR%1d",indexPath.row,indexPath.section];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (indexPath.section == 0)
{
if(self.firstSectionIndex == indexPath)
{
cell.accessoryType = UITableViewCellAccessoryNone;
}
else
{
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
}
if (indexPath.section == 1)
{
if(self.secondSectionIndex == indexPath)
{
cell.accessoryType = UITableViewCellAccessoryNone;
}
else
{
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
}
if (cell == nil)
{
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
cell.backgroundColor = [UIColor clearColor];
cell.textLabel.textColor = [UIColor whiteColor];
switch (indexPath.section)
{
case 0:
{
if (indexPath.row == 0)
{
if(self.firstSectionIndex != indexPath)
{
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
else
{
cell.accessoryType = UITableViewCellAccessoryNone;
}
cell.textLabel.text = @"Yes";
}
if (indexPath.row == 1)
{
cell.textLabel.text = @"No";
}
}
break;
case 1:
{
if (indexPath.row == 0)
{
if(self.secondSectionIndex != indexPath)
{
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
else
{
cell.accessoryType = UITableViewCellAccessoryNone;
}
cell.textLabel.text = @"Easy";
}
if (indexPath.row == 1)
{
cell.textLabel.text = @"Medium";
}
if (indexPath.row == 2)
{
cell.textLabel.text = @"Hard";
}
}
break;
default:
break;
}
}
tableView.backgroundColor = [UIColor clearColor];
tableView.backgroundView = nil;
return cell;
}
dans mon didSelectRowAtIndexPath, je l'ai fait ce qui suit:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.section == 0)
{
self.firstSectionIndex = indexPath;
}
if (indexPath.section == 1)
{
self.secondSectionIndex = indexPath;
}
[tableView reloadData];
}
J'ai cherché l'état de cellule sélecti sur pour être enregistré pour référence à long terme, en quête de celui-ci, j'ai trouvé un lien utile here.
Mais c'est la sélection de plusieurs cellules et le type d'accessoire coche est appliqué pour toutes les lignes dans la section.Je ne comprends pas ce qui ne va pas.Peut-on me guider s'il vous plaît !!
Merci à tous à l'avance :)
googler pas goggling :) –
Je remarque que vous jamais clair '' self.firstSectionIndex' ou self.secondSectionIndex', qui ne peut pas être vrai? – trojanfoe
@ LithuT.V Edited :), pouvez-vous s'il vous plaît m'aider –