2010-08-16 61 views
3

我在窗體上使用多個UISliders,並且我只想要一個方法來跟蹤滑塊更改。UISlider發件人valuechanged

現在我有一個方法:

- (IBAction) slider1ValueChanged:(UISlider *)sender { 
    somelabel.text = [NSString stringWithFormat:@" %.1f", [sender value]]; 
} 

但因爲我使用了多個滑塊,我想用switch語句來火了特定滑塊,因此,例如,如果我有2個滑塊,他們都使用上面的ValueChanged方法,我想要類似於:

- (IBAction) slider1ValueChanged:(UISlider *)sender { 
switch(SLIDERID) 
case SLIDER1: 
     blabla; 
     break; 
case SLIDER2: 
     update other label; 
     break; 
case default: 
     break; 
      somelabel.text = [NSString stringWithFormat:@" %.1f", [sender value]]; 
    } 

誰能幫助我?

在此先感謝!

回答

10

你只需要比較sender參數,以此來滑塊來找出哪一個感動:

-(IBAction) sliderValueChanged:(UISlider*)sender { 
    if (sender == self.temperatureSlider) { 
     // ... 
    } else if (sender == self.altitudeSlider) { 
     // ... 
    } // etc 
} 

然後所有的滑塊勾在IB或通過-setTarget這個動作。

+0

噢,我的上帝..謝謝......我太累了,我想方式太複雜了!謝謝,這解決了它! – CyberK 2010-08-16 19:48:48

0

一個值分配給在IB任何UI組件的標籤屬性和使用開關的情況下,像這樣評價它:

typedef enum Commands { 
    CMD_PLAY_MUSIC = 0, 
    CMD_STOP_MUSIC, 
    CMD_PAUSE_MUSIC, 
    CMD_EDIT_PLAYLIST, 
    CMD_ADJUST_VOLUME, 
} Commands; 


-(id) processUIEvent:(id) sender { 

    int tag = [sender tag]; 
    switch (tag) { 
     case CMD_PLAY_MUSIC: 
      // Code here... 
      break; 

     case CMD_PAUSE_MUSIC: 
      // Code here...     
      break; 

     case CMD_EDIT_PLAYLIST: 
      // Code here... 
      break; 

     default: 
      // Event not handled 
      break; 
    } 
} 
相關問題