2010-10-20 35 views
3

OK, voici ma question exemple de l'ennemi, je crée un UISwitch dans les 3 premiers accessoryView de cellulesSDK iPhone: Ajouter UISlider et UISwitch dans une vue de table ne se bloque que lorsque vous appuyez sur le curseur?

theSwitch = [[[UISwitch alloc] initWithFrame:CGRectZero] autorelease]; 
    [cell addSubview:theSwitch]; 
    cell.accessoryView = theSwitch; 

et ajouter 2 curseur dans les prochains 3 cellules

 theSlider = [[[UISlider alloc] initWithFrame:CGRectMake(174,12,120,23)] autorelease]; 
     theSlider.maximumValue=99; 
     theSlider.minimumValue=0; 
     [cell addSubview:theSlider]; 
     cell.accessoryView = theSlider; 

après, ajouter l'action pour passer et le curseur

[(UISwitch *)cell.accessoryView addTarget:self action:@selector(switchToggled:) forControlEvents:UIControlEventValueChanged]; 

[(UISlider *)cell.accessoryView addTarget:self action:@selector(sliderValueChange:) forControlEvents:UIControlEventValueChanged]; 

Il est fonctionne que si seulement ajouter l'interrupteur dans la cellule

Je pense que cela est peut-être ma question @selector(switchToggled:) et @selector(sliderValueChange:)

.

si je passe le UISwitch, il ne plantera pas

mais si je touche tout curseur, planter et obtenu un message: « [UISlider estActif]: sélecteur non reconnu envoyé à l'instance »

ici est mon vide autour

- (void)switchToggled:(id)sender{ 
     UISwitch *theSwitch = (UISwitch *)sender; 
     UITableViewCell *cell = (UITableViewCell *)theSwitch.superview; 
     UITableView *tableView = (UITableView *)cell.superview; 
     NSIndexPath *indexPath = [tableView indexPathForCell:cell]; 



     if(theSwitch.on) { 
       ... 
    } 
     else { 
       ... 
    } 

    } 

la sliderValueChange tous les plus les mêmes que

- (void)sliderValueChange:(id)sender{ 
    UISlider *theSlider = (UISlider *)sender; 
    UITableViewCell *cell = (UITableViewCell *)theSlider.superview; 
    UITableView *tableView = (UITableView *)cell.superview; 

      ... 
} 

Est-ce que quelqu'un sait comment donner une action au contrôleur?

Merci beaucoup!

Répondre

2

MISE À JOUR
Après les commentaires, voici un sélecteur général, vous devez utiliser.
Remarque: vous ne devrez appeler addTarget qu'une seule fois à l'aide de ce sélecteur.

-(void)generalSelector:(id)sender{ 
    if ([sender isKindOfClass:[UISlider class]]){ 
     UISlider *slider = (UISlider *)sender; 
     NSLog(@"Slider value %f",slider.value); 
    }else{ 
     UISwitch *temp = (UISwitch *)sender; 
     NSLog(@"Switch is %@",[email protected]"ON":@"OFF"); 
    } 
} 
+0

Oui je l'ai fait, juste manque le type ici! –

+0

ok permet de sauvegarder, quand appelez-vous exactement l'isOn sur le "curseur"? Il n'apparaît pas dans vos extraits de code. – medopal

+0

Je n'appelle jamais le curseur isOn sur, je le laisse uniquement appeler lorsque le commutateur est basculé. –