我想在某些情况下禁用下面的委托方法
-(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
让我们说if(x==YES)
只有在委托方法上方命中,否则它不会响应。
请让我知道你的建议。
我想在某些情况下禁用下面的委托方法
-(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
让我们说if(x==YES)
只有在委托方法上方命中,否则它不会响应。
请让我知道你的建议。
如果您不想调用此方法,则覆盖respondsToSelector:
并返回:NO
- (BOOL)respondsToSelector:(SEL)selector
{
if (selector == @selector(pickerView:viewForRow:forComponent:reusingView:))
{
if(your_Condition)
{
return YES;
}
eles
{
return NO;
}
}
return [super respondsToSelector:selector];
}
所以你像往常一样实现委托方法。当Picker View询问您的代表时,它是否了解您只是撒谎的消息。
有两种方法可以做到。
1) 使委托为空
当您不想调用该方法时设置一个条件,然后在那个地方 make delegate = nill
。
delegate =self
并在需要调用该方法时再次重置它。
我必须说的第二种方法更好
2) 在 Delegate 方法中使用标志
尝试在方法内部实现 if-condition (Flag) 并根据要求设置其 TRUE 和 FALSE 值。
例如。
-(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
if(x == YES) {
// Only this code need to implement
} else {
return;
}
}