Добавить несколько изображений в том же UIImageView и изменять их при каждом нажатии

Я пытаюсь реализовать UIImageView, который показывает разные.png (организованный в NSArray) при каждом нажатии. Когда тап достигнет последнего.png, следующий тап покажет первый.png и так далее. Я нашел здесь старый ответ: добавьте 4 изображения в режиме просмотра изображений и измените изображение жестом касания или пролистывания, который, кажется, идет в правильном направлении. Тем не менее, он не представляется применимым в новом XCode, и больше нет возможности запрашивать разъяснения или обновления, так как тема была закрыта. У кого-нибудь есть идея о том, как создать подкласс всего ImageView, чтобы получить ожидаемый результат?

1 ответ

Решение

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

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

@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

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

Другие вопросы по тегам