【问题标题】:Trying to use UIPickerView to make a selection upon which image to display in UIImageView尝试使用 UIPickerView 选择要在 UIImageView 中显示的图像
【发布时间】:2015-10-12 03:08:18
【问题描述】:

Using UIPickerView to display different images upon selection in UIImageView

所以我正在查看这篇文章以帮助我执行与该用户相同的功能。我正在使用 PickerView 让用户在三个不同的地图之间进行选择,并根据用户选择更改 ImageView。我在代码的以下部分遇到了麻烦

chosenFloor.image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[pickerImage objectAtIndex:row]]];

它告诉我'从 UIImageView 分配给 UIImage * 的不兼容指针类型 *

有人可以解释如何将 UIImage 转换为适合 UIImageView 吗?我将在下面包含我的其余代码。我相信我在我的 .h 文件中正确声明了所有内容,这是用户在上述链接中遇到的问题。

Screenshot of my iOS Simulator

#import <UIKit/UIKit.h>

@interface MapViewController : UIViewController <UIPickerViewDelegate, UIPickerViewDataSource> {

    IBOutlet UIPickerView *chooseFloor;
    IBOutlet UIImageView *chosenFloor;
    NSArray *pickerData;
}

@property (nonatomic, retain) UIPickerView *chooseFloor;
@property (nonatomic, retain) UIImageView        *chosenFloor;
@property (nonatomic, retain) NSArray *pickerFloor;
@property (nonatomic, retain) NSArray *pickerImage;
//-(IBAction)performSomeAction:(id)sender;

@end

#import "MapViewController.h"

@interface MapViewController ()

@end

@implementation MapViewController

@synthesize chooseFloor;
@synthesize pickerFloor;
@synthesize chosenFloor;
@synthesize pickerImage;

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    NSArray *array = [[NSArray alloc] initWithObjects:@"Basement",
                       @"Main Floor",
                       @"Penthouse", nil];

    self.pickerFloor = array;

    self.chooseFloor.dataSource = self;
    self.chooseFloor.delegate = self;

    self.pickerImage = [[NSArray alloc] initWithObjects:@"Basement.png", @"Main.png", @"Penthouse.png", nil];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
    //Determine how many columns in my pickerView
    return 1;
}

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
    //Determine the number of rows in my pickerView
    return [pickerFloor count];
}

//Delegate Method
//This delegate method gives us s way to retrieve the selected item from the picker view
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    return [pickerFloor objectAtIndex:row];
}

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {

    chosenFloor.image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[pickerImage objectAtIndex:row]]];
}
@end

【问题讨论】:

    标签: ios objective-c iphone uiimageview uiimage


    【解决方案1】:

    这行你错了:

     chosenFloor.image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[pickerImage objectAtIndex:row]]];
    

    chosenFloor.imageUIImage。应该是

    chosenFloor.image = [UIImage imageNamed:[pickerImage objectAtIndex:row]];
    

    【讨论】:

      猜你喜欢
      • 2020-09-06
      • 1970-01-01
      • 1970-01-01
      • 2017-03-30
      • 2019-04-20
      • 2018-02-26
      • 2013-06-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多