Iphone 对条件大小写禁用UIPickerView/UITableView的委托方法

Iphone 对条件大小写禁用UIPickerView/UITableView的委托方法,iphone,ios,objective-c,ipad,Iphone,Ios,Objective C,Ipad,我想在某些情况下禁用下面的委托方法 -(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view 假设如果(x==YES)则只在委托方法命中上方,否则它不会响应 请告诉我你的建议。有两种方法 1) 使委托为空 当您不想调用该方法时,设置一个条件,并在该位置使delegate=nill 当

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

-(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
假设
如果(x==YES)
则只在委托方法命中上方,否则它不会响应


请告诉我你的建议。

有两种方法

1) 使委托为空

当您不想调用该方法时,设置一个条件,并在该位置使
delegate=nill

当需要调用该方法时,再次重置它
delegate=self

我必须说的第二种方法更好

2) 在委托方法内使用标志

尝试在方法内部实现if条件(Flag),并根据需要设置其真值和假值

例如

-(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
     if(x == YES) {
                // Only this code need to implement
     } else {
     return;
     }

}

如果您不想调用此方法,则覆盖
响应选择器:
并返回

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

因此,您正在正常地实现委托方法。当picker视图询问您的代理是否理解消息时,您只是在欺骗它。

您可以将if条件放入此方法中……我无法正确理解如何使用此方法!:(请详细说明。