Comment faire pour centrer le texte dans un UITableViewCell lorsque l'accessoire est UITableViewCellAccessoryCheckmark
J'essaie de conserver le texte centré dans un UITableViewCell, quand j'ai le accessoryView ensemble de UITableViewCellAccessoryCheckmark. Je suis également en utilisant une table de montage avec cette classe.
Voici une capture d'écran de ce que je ne veux pas.
Comment puis-je arrêter le texte étant en retrait de la gauche?
Mon willDisplayCell méthode..
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row == [self cellToCheckmark]) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
else {
NSLog(@"Not Being Checked");
cell.accessoryType = UITableViewCellAccessoryNone;
}
cell.textLabel.textAlignment = UITextAlignmentCenter;
if (cell.shouldIndentWhileEditing == YES) {
cell.shouldIndentWhileEditing = NO;
}
}
CellForRowAtIndexPath:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = nil;
static NSString *CellIdentifier = @"Cell";
cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.textLabel.textAlignment = UITextAlignmentCenter;
if (indexPath.section == 0) {
switch (indexPath.row) {
case 0:
cell.textLabel.text = @"Google";
break;
case 1:
cell.textLabel.text = @"Bing";
break;
case 2:
cell.textLabel.text = @"Yahoo!";
break;
default:
break;
}
}
if (indexPath.row == [self cellToCheckmark]) {
NSLog(@"Being Checked");
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
else {
NSLog(@"Not Being Checked");
cell.accessoryType = UITableViewCellAccessoryNone;
}
if (cell.shouldIndentWhileEditing == YES) {
cell.shouldIndentWhileEditing = NO;
}
return cell;
}
OriginalL'auteur W Dyson | 2012-05-31
Vous devez vous connecter pour publier un commentaire.
iOS 8+ solution:
Non, seulement des observations empiriques. Je n'ai pas trouvé d'Apple de la constante ou la valeur d'exécution.
OriginalL'auteur Gleb Tarasov
Il y a 2 choses que vous devez faire:
Tout d'abord, vous devez assurez-vous de définir le style de tableau par Défaut:
UITableViewCellStyleDefault
. Tous les autres styles utiliser undetailTextLabel
d'une manière ou d'une autre, vous ne serez pas en mesure de définir la textLabel de l'alignement de la propriété.Ensuite, vous pouvez définir l'alignement de votre cellule textLabel:
Alors la configuration de l'accessoire pour cocher quel qu'en soit vos données exige.
Capture d'écran
N'a pas d'importance si vous utilisez une table de montage ou pas. Ces propriétés s'appliquent uniquement à un
UITableView
J'ai mis à jour ma question. Il importe peu que j'ai utilisé des cellules statiques au lieu de prototypes?
Non, n'a pas d'importance.
Cela n'a pas résolu le problème. D'autres idées?
OriginalL'auteur WrightsCS
Ces solutions de travail pour défaut des cellules. Si vous avez votre propre cellule, de la façon la plus simple de le faire est de créer l'étiquette de contraintes à la fois à la marge gauche et la marge de droite, puis de créer une prise de courant pour votre marge de gauche de la contrainte, et de définir sa constante dans le
cellForRowAtIndexPath
méthode:De cette façon, la marge de droite qui est ajouté à votre accessoryType est ensuite ajouté à la gauche.
OriginalL'auteur Epaga
Ne sais pas si le problème est de résoudre
OriginalL'auteur Jeremy Piednoel
Il semble être beaucoup plus simple de répondre (Voir cette réponse). En bref, vous êtes le centrage de l'étiquette dans le contenu de la cellule de vue. Au lieu de cela, le centre de la cellule elle-même, alors il ne bouge pas.
Essayé, il fonctionne sur iOS 11.2.
OriginalL'auteur Daniel