2016-01-17 3 views
-2

Я начал разработку iOS несколько дней назад и остановился на следующей проблеме: изображение не изменяется, щелкнув. Первое изображение исчезает.Как заменить изображение другим, нажав кнопку?

ViewController.h

#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController 
@property (strong, nonatomic) IBOutlet UIImageView *imgView; 
- (IBAction)changeImage:(id)sender; 
@end 

ViewController.m

#import "ViewController.h" 

@interface ViewController() 

@end 

@implementation ViewController 

@synthesize imgView; 

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

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

- (IBAction)changeImage:(id)sender { 
    UIImage *img = [UIImage imageNamed:@"animal_3.png"]; 
    [imgView setImage: img];} 
@end 
+0

Был ли «changeImage:' вызван? –

+1

Возможно, изображение не загружается, а 'img' - nil? Является ли изображение animal_3.png включенным в цель? Он должен быть указан либо в проекте Xcode, либо в вашем файле Images.xcasset, и когда вы его выбираете, вам нужно отметить отметку в разделе «Целевое членство» – Clafou

+0

Соединились ли вы с IBOutlet и IBAction в раскадровке? Как сказал @TimVermeulen, если 'changeImage:' не был вызван, возможно, он не связан. И, если 'imgView' равен нулю, он также не подключен к раскадровке/xib. – DeepFriedTwinkie

ответ

0

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

Новое изображение "animal_3.png" может и не существовать. Убедитесь, что он правильно добавлен в image.xcassets и назван правильно. Также убедитесь, что images.xcassets включены в ресурсы пакета целей (Project> Выбрать правильную цель> Сборка фаз> Обеспечить, чтобы изображения.xcassets были включены в список ресурсов пакета копирования, если не добавить его).

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

UIImage *image = [UIImage imageNamed:@"animal_3.png"]; 
    if (image) 
    { 
     NSLog(@"Image exists"); 
    } 
    else 
    { 
     NSLog(@"NO IMAGE"); 
    } 

Adding Images using xcassets

Скриншот, подтверждающий, что файл xcassets добавляется фазы сборки (Xcode 7.2): enter image description here

+0

Не удается найти «Проект> Выбрать правильную цель> Сборка фаз> ...» в Xcode 7. – Gintooonic

+0

«Добавление изображений с использованием Xcassets» выглядит по-другому. Я проверил, изображения загружены, imgView и changeImg (Действие) видны в Редакторе подключений. – Gintooonic

+0

Пожалуйста, ознакомьтесь с обновленным ответом, чтобы подтвердить, что изображение загружено. – Lachlan

0

если прежний образ исчезает, это означает, что ваш "animal_3.png" изображения не существует. проверьте имя изображения.

+0

После прочтения кода десятка раз, если в имени файла отсутствует «s». Спасибо вам всем! – Gintooonic

+0

Вы могли бы одобрить, как правильный ответ, пожалуйста. благодаря :) –

Смежные вопросы