我有 3 个选择器,其中一个只包含图像。

所以,对于这个,我必须使用 viewForRow,但对于其他两个是带有标签的常见选择器,我需要 titleForRow,除非我使用 viewForRow,titleForRow 永远不会被调用。

我怎样才能在我的类(class)中同时调用两个代表?

这就是我所拥有的:

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

    [[[objectPicker subviews] objectAtIndex:0] setHidden:YES];
    [[[objectPicker subviews] objectAtIndex:5] setHidden:YES];
    [[[objectPicker subviews] objectAtIndex:8] setHidden:YES];

    return ; //will be implemented, but this will return the icons
}

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
    [[[objectPicker subviews] objectAtIndex:0] setHidden:YES];
    [[[objectPicker subviews] objectAtIndex:5] setHidden:YES];
    [[[objectPicker subviews] objectAtIndex:8] setHidden:YES];

    if (pickerView == self.timePicker) {
        return [timeList objectAtIndex:row];
    }
    else if(pickerView == self.powerPicker) {
        return [powerList objectAtIndex:row];
    }
}

最佳答案

你不能在同一个委托(delegate)中同时拥有两者。解决方案是只实现 viewForRow: 并为文本列返回一个 UILabel 对象。将 label.text 设置为您在 textForRow: 中返回的字符串。

关于ios - 如何在同一类中为不同的选择器使用 viewForRow 和 titleForRow?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4229186/

10-09 12:48