Изменение изображения с помощью кнопки iPhone - PullRequest
1 голос
/ 01 августа 2010

У меня есть UIImageView *picture

и UIButton *next

и

- (IBAction)next {
}

Я хочу изменить изображение на виде, но только еслиизображение равно ... например img1

Но с помощью той же кнопки я хочу также иметь возможность изменить изображение, если изображение = img2, но на другое изображение (img3)

Пока чтоУ меня есть этот код, но он дает мне ошибки:

- (IBAction)next {
    if (picture UIImage = imageNamed:@"img01.jpg") {
    [picture setImage: [UIImage imageNamed:@"img02.jpg"
    }
    if (picture UIImage = imageNamed:@"img02.jpg") {
    [picture setImage: [UIImage imageNamed:@"img03.jpg"
 }
}

Ответы [ 4 ]

1 голос
/ 01 августа 2010

Теперь я понял, что все, что я сделал, это забыл поставить .jpg в конце img% i;)

- (IBAction)next {
     static int index = 0;  // <-- here
    index++;
    // Set imageCount to as many images as are available
    int imageCount=16;
    if (index<=imageCount) {
        NSString* imageName=[NSString stringWithFormat:@"img%i", index];
        [picture setImage: [UIImage imageNamed: imageName]];
    }
}
1 голос
/ 01 августа 2010
- (IBAction)next {
    picture.tag++;
    [picture setImage:[UIImage imageNamed:
             [NSString stringWithFormat:@"img%02d.jpg",1+(picture.tag%2)]
    ]];
}

должно быть самым простым решением.

редактировать при первом клике, перейти к img02.jpg, при втором клике вернуться к img01.jpg снова.Увеличьте 2, чтобы разрешить img03.jpg и т. Д.

0 голосов
/ 01 августа 2010

Подкласс UIImageView и добавьте свойство enum в заголовок:

typedef enum _PictureType {
    PictureTypeFirstImage = 0,
    PictureTypeSecondImage,
    PictureTypeThirdImage,
    PictureTypes
} PictureType;

@interface MyImageView : UIImageView {
    PictureType type;
}

@property (readwrite) PictureType type;

В реализации:

@synthesize type;

При инициализации picture:

[picture setImage:[UIImage imageNamed:@"img01.jpg"]];
picture.type = PictureTypeFirstImage;

В вашем методе действий:

- (IBAction) next {
    switch (picture.type) {
        case (PictureTypeFirstImage): {
            [picture setImage:[UIImage imageNamed:@"img02.jpg"]];
            picture.type = PictureTypeSecondImage;
            break;
        }
        case (PictureTypeSecondImage): {
            [picture setImage:[UIImage imageNamed:@"img03.jpg"]];
            picture.type = PictureTypeThirdImage;
            break;
        }
        default:
            break;
    }
}
0 голосов
/ 01 августа 2010
- (IBAction)next {
    if ([[picture image] isEqual: [UIImage imageNamed:@"img01.jpg"]]) {

       [picture setImage: [UIImage imageNamed:@"img02.jpg"]];

    } else if ([[picture image] isEqual: [UIImage imageNamed:@"img02.jpg"]]) {

       [picture setImage: [UIImage imageNamed:@"img03.jpg"]];
    }
}

Кроме того, это довольно примитивный способ изменения изображения.Более элегантный способ - создать глобальный int с текущим индексом изображения, поэтому нажатие кнопки «Далее» просто увеличит это число.Затем, если существует изображение с таким именем, переключитесь на него:

// Объявление индекса в Header.h

index=0;

- (IBAction)next {
    index++;
    // Set imageCount to as many images as are available
    int imageCount=2;
    if (index<=imageCount) {
        NSString* imageName=[NSString stringWithFormat:@"img%02i", index];
        [picture setImage: [UIImage imageNamed: imageName]];
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...