Изменение изображения вида UIImage с помощью кнопки - PullRequest
7 голосов
/ 11 февраля 2011

Эй, у меня есть приложение ImageView в моем приложении, и я хочу, чтобы пользователь мог изменять изображение в этом представлении изображения, нажимая кнопку. Это код, который я получил

В .ч

@interface BGViewController : UIViewController {

    IBOutlet UIImageView *image;

}

@property (nonatomic, retain) IBOutlet UIImageView *image;

-(IBAction)img1:(id)sender;
-(IBAction)img2:(id)sender;

и в .м

@synthesize image;

-(IBAction)img1:(id)sender; {

    UIImage *image = [UIImage imageNamed: @"Main.png"];

}

-(IBAction)img2:(id)sender; {

    UIImage *image = [UIImage imageNamed: @"Themes.png"];


}

Кстати, для каждого изображения есть одна кнопка!

Приложение собирается, но когда я нажимаю на любую из кнопок, ничего не происходит.

Ответы [ 2 ]

10 голосов
/ 11 февраля 2011

Замените

UIImage *image = [UIImage imageNamed: @"Main.png"];

и

UIImage *image = [UIImage imageNamed: @"Themes.png"];

на

image.image = [UIImage imageNamed:@"Main.png"];

и

 image.image = [UIImage imageNamed:@"Themes.png"];

Теперь все должно работать нормально :)

3 голосов
/ 11 февраля 2011

Просто установите свойство image для UIImageView:

imageView.image = [UIImage imageNamed:@"Themes.png"];

У вас также есть синтаксическая ошибка в ваших реализациях методов, избавьтесь от точки с запятой (;) после сигнатур методов.

Если бы я проектировал этот класс, я бы использовал один метод действия и использовал бы свойство tag аргумента sender для индексации в массив объектов NSString.(Для первой кнопки tag будет 0, а для второй будет 1 и т. Д.)

Вам следует переименовать ваш UIImageView ivar в imageView, чтобы уменьшить неоднозначность.

@interface BGViewController : UIViewController {
    IBOutlet UIImageView *imageView;
}

@property (nonatomic, retain) IBOutlet UIImageView *imageView;

-(IBAction)changeImage:(id)sender;

@end

@implementation BGViewController 

NSString *images[] = {
   @"Main.png",
   @"Themes.png"
};

@synthesize imageView;

-(IBAction)changeImage:(id)sender {
  imageView.image = [UIImage imageNamed: images[sender.tag]];
}

@end
...