Как определить, какой элемент управления был затронут? - PullRequest
2 голосов
/ 09 ноября 2010

У меня два вида PickerView, как мне настроить своих делегатов, чтобы определить, какой из них обрабатывать? Какой-то if(), чтобы проверить, был ли сборщик, который бросил событие, - pickerX или pickerY?

Будут оценены любые идеи.

Ответы [ 2 ]

5 голосов
/ 09 ноября 2010

Вы можете иметь IBOUtlets для PickerViews, например

@property (nonatomic, retain) IBOutlet UIPickerView *firstPickerView; 
@property (nonatomic, retain) IBOutlet UIPickerView *secondPickerView; 

, а затем в методе делегата сделать что-то подобное

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:  (NSInteger)component {
  if (pickerView == self.firstPickerView) {
  }
  else if (pickerView == self.secondPickerView) {
  }
}

или вы можете установить теги на PickerViews в IB иделать

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:  (NSInteger)component {
  if (pickerView.tag == 0) {

  }
  else if (pickerView.tag == 1) {
  }
}
1 голос
/ 09 ноября 2010

Когда вызывается любой метод делегата, он также передает объект, для которого он вызывается, скажем, в этом случае.

– pickerView:rowHeightForComponent:

Вы можете идентифицировать конкретный сборщик по его ID TAG.И да, если еще будет использоваться.

...