4

I'm using some UIPickerView delegate methods only for the brand-new-Ive-modified iOS under NDA, e.g.

-(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view

I don't want to implement them for iOS6, to preserve default iOS behavior, so a condition inside the method won't work. How to do it?

iPatel
  • 46,010
  • 16
  • 115
  • 137

1 Answers1

4

In your delegate, override respondsToSelector: and return NO in case of old OS:

- (BOOL)respondsToSelector:(SEL)selector
{
    if (selector == @selector(pickerView:viewForRow:forComponent:reusingView:))
        return MyFunctionThatChecksIosVersionIsMinimum7();
    return [super respondsToSelector:selector];
}

So you're implementing the delegate method normally. When the picker view is asking your delegate if it understands the message you're simply lying to it.

Nikolai Ruhe
  • 81,520
  • 17
  • 180
  • 200