Я пытаюсь реализовать UIImageView, который показывает разные .png (организованные в NSArray) при каждом нажатии. Когда кран достигнет последнего .png, в следующем кране появится первый .png и т. Д. Я нашел старый ответ здесь: Add 4 image in imageview and change the picture with tap or swipe gesture , который, кажется, идет в правильном направлении. Однако, похоже, это не применимо в новом XCode, и больше нет возможности запрашивать разъяснения или обновления, так как тема была закрыта. Есть ли у кого-нибудь идея о том, как подкласс, а затем весь ImageView получить ожидаемый результат?Добавить несколько изображений в том же UIImageView и изменить их при каждом нажатии
0
A
ответ
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
Обратите внимание: может быть, есть лучший подход к этому, но это то, что он работал в моем случае. Надеюсь, это может быть полезно.
Извините, я забыл упомянуть, что UIImage View создан программно, и я не использую IBAction для прикосновения. Спасибо! – Stefano