2015-06-17 2 views
0

Я пытаюсь реализовать UIImageView, который показывает разные .png (организованные в NSArray) при каждом нажатии. Когда кран достигнет последнего .png, в следующем кране появится первый .png и т. Д. Я нашел старый ответ здесь: Add 4 image in imageview and change the picture with tap or swipe gesture , который, кажется, идет в правильном направлении. Однако, похоже, это не применимо в новом XCode, и больше нет возможности запрашивать разъяснения или обновления, так как тема была закрыта. Есть ли у кого-нибудь идея о том, как подкласс, а затем весь ImageView получить ожидаемый результат?Добавить несколько изображений в том же UIImageView и изменить их при каждом нажатии

+0

Извините, я забыл упомянуть, что UIImage View создан программно, и я не использую IBAction для прикосновения. Спасибо! – Stefano

ответ

0

Решение было намного проще, чем я думал.

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

@interface YourViewController() 

@property (nonatomic, strong) NSArray *images; 
@property (nonatomic, assign) NSInteger currentImageIndex; 

@end 


@implementation YourViewController 

- (void)viewDidLoad { 

// Here you fill your images array 
self.images = ... 

// Set currentImageIndex to 0 and display first image 
self.currentImageIndex = 0; 
[self displayImageWithIndex:self.currentImageIndex]; 

// Additional code, like your button target/action 
} 
- (void)myButtonWasTapped:(id)sender 
{ 
if(self.currentImageIndex + 1 < [self.images count]) { 
    self.currentImageIndex++; 
} else { 
    self.currentImageIndex = 0; 
} 
[self displayImageWithIndex: self.currentImageIndex]; 
} 

- (void)displayImageWithIndex:(NSInteger)index { 
self.imageView.image = [self.images objectAtIndex:index]; 
} 

@end 

Обратите внимание: может быть, есть лучший подход к этому, но это то, что он работал в моем случае. Надеюсь, это может быть полезно.