0

我想在某些情况下禁用下面的委托方法

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

让我们说if(x==YES)只有在委托方法上方命中,否则它不会响应。

请让我知道你的建议。

4

2 回答 2

1

如果您不想调用此方法,则覆盖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询问您的代表时,它是否了解您只是撒谎的消息。

于 2013-09-11T07:58:11.707 回答
0

有两种方法可以做到。

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;
     }

}

于 2013-09-11T07:54:55.090 回答