Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在包含多个组件的UIPickerView中为特定组件添加图像?_Ios_Objective C_Ios7_Uipickerview - Fatal编程技术网

Ios 如何在包含多个组件的UIPickerView中为特定组件添加图像?

Ios 如何在包含多个组件的UIPickerView中为特定组件添加图像?,ios,objective-c,ios7,uipickerview,Ios,Objective C,Ios7,Uipickerview,几个小时以来,我一直在尝试添加一个包含4个组件的UIPickerView。其中三个组件应该显示来自三个不同的NSArray的字符串数据,但对于第四个组件,我尝试添加图像 在另一本书中,我读到了这种方法: - (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view { // ret

几个小时以来,我一直在尝试添加一个包含4个组件的
UIPickerView
。其中三个组件应该显示来自三个不同的
NSArray
的字符串数据,但对于第四个组件,我尝试添加图像

在另一本书中,我读到了这种方法:

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
   // return aUIView;
}
它返回UIView,在我的例子中是ImageView

我已经成功地显示了存储在images数组中的ImagesView,但前提是在picker视图中有一个组件

我如何将它与其他三个组件结合起来,它们不应该返回UIView,而只是返回一些字符串值

这是迄今为止我在
.m
中得到的:

- (void)viewDidLoad
{
    [super viewDidLoad];

   // Four Arrays with some data
    self.contractLevelArray = ...someStringObjects... 
    self.imageViewsWithImagesForSuitArray =...someUIImageViewObjectsWithImages...
    self.doubleOrRedoubleArray = ...someStringObjects...
    self.contractByPlayerArray = ...someStringObjects...
}

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
    return 4;
}

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{

    if (component == 0) {
        return self.contractLevelArray.count;
    } else if (component == 1) {
        return self.imageViewsWithImagesForSuitArray.count;
    } else if (component == 2) {
        return self.contractByPlayerArray.count;
    } else {
        return self.doubleOrRedoubleArray.count;
    }
}

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{

    if (component == 0) {
        return [self.contractLevelArray objectAtIndex:row];
    } else if (component == 1) {


        // For this component i want to return the UIImageViews for my images


    } else if (component == 2) {
        return [self.contractByPlayerArray objectAtIndex:row];
    } else {
        return [self.doubleOrRedoubleArray objectAtIndex:row];
    }

}

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
    // self.myImages is an array of UIImageView objects
    UIView *myView = [self.imageViewsWithImagesForSuitArray objectAtIndex:row];

    // first convert to a UIImage
    UIGraphicsBeginImageContextWithOptions(myView.bounds.size, NO, 0);

    [myView.layer renderInContext:UIGraphicsGetCurrentContext()];

    UIImage * image = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    // then convert back to a UIImageView and return it
    UIImageView *imageView = [[UIImageView alloc] initWithImage:image];

    return imageView;
}

不能同时使用
viewForRow
titleForRow
。在您的情况下,只需使用
viewForRow


对于图像组件,返回图像视图。对于其他标签,请返回包含所需文本的标签。

谢谢。这很有帮助。我花了一些时间才弄明白如何配置标签,但现在它开始工作了!:)