UISwitch dans une cellule UITableView

Comment puis-je intégrer un UISwitch dans une cellule UITableView ? Des exemples peuvent être vus dans le menu des parameters.

Ma solution actuelle:

 UISwitch *mySwitch = [[[UISwitch alloc] init] autorelease]; cell.accessoryView = mySwitch; 

Le paramétrer en tant qu’accessoire est généralement la voie à suivre. Vous pouvez le configurer dans tableView:cellForRowAtIndexPath: Vous pouvez utiliser target / action pour faire quelque chose lorsque le commutateur est basculé. Ainsi:

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { switch( [indexPath row] ) { case MY_SWITCH_CELL: { UITableViewCell *aCell = [tableView dequeueReusableCellWithIdentifier:@"SwitchCell"]; if( aCell == nil ) { aCell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"SwitchCell"] autorelease]; aCell.textLabel.text = @"I Have A Switch"; aCell.selectionStyle = UITableViewCellSelectionStyleNone; UISwitch *switchView = [[UISwitch alloc] initWithFrame:CGRectZero]; aCell.accessoryView = switchView; [switchView setOn:NO animated:NO]; [switchView addTarget:self action:@selector(switchChanged:) forControlEvents:UIControlEventValueChanged]; [switchView release]; } return aCell; } break; } return nil; } - (void)switchChanged:(id)sender { UISwitch *switchControl = sender; NSLog( @"The switch is %@", switchControl.on ? @"ON" : @"OFF" ); } 

Vous pouvez append un UISwitch ou tout autre contrôle à l’ accessoryView la cellule. De cette façon, il apparaîtra sur le côté droit de la cellule, ce qui est probablement ce que vous voulez.

 if (indexPath.row == 0) {//If you want UISwitch on particular row UISwitch *theSwitch = [[UISwitch alloc] initWithFrame:CGRectZero]; [cell addSubview:theSwitch]; cell.accessoryView = theSwitch; } 

Vous pouvez préparer la cellule dans Interfacebuilder, la lier à un IBOutlet de votre Viewcontroller et la renvoyer lorsque la tableview demande la ligne appropriée.

Au lieu de cela, vous pouvez créer un xib distinct pour la cellule (à nouveau avec IB) et le charger en utilisant UINib lors de la création des cellules.

Enfin, vous pouvez créer le commutateur par programmation et l’append à vos cellules contentview ou AccessoiresView.

Ce qui vous convient le mieux dépend en grande partie de ce que vous aimez faire. Si le contenu de votre table-vues est fixe (pour une page de parameters, etc.), les deux premiers pourraient bien fonctionner, si le contenu est dynamic, je préférerais la solution programmatique. S’il vous plaît soyez plus précis dans ce que vous aimeriez faire, cela faciliterait la réponse à votre question.

pour les utilisateurs rapides

 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = UITableViewCell(style: .default, reuseIdentifier: "TableIdentifer") let switch = UISwitch() cell.accessoryView = switch }