setImage: не вызывает изменения изображения - PullRequest
1 голос
/ 25 октября 2011

Я создал два UIImageView с в моем коде:

UIImageView *background = [[UIImageView alloc]initWithFrame:CGRectMake(150, 60, 180, 180)];
UIImageView *result = [[UIImageView alloc]initWithFrame:CGRectMake(150, 60, 180, 180)];
[self.view addSubview:background];
[self.view addSubview:result];
[self.view insertSubview:result aboveSubview:background];

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[background setImage:[UIImage imageNamed:[defaults objectForKey:@"colour"]]];

Когда вы нажимаете кнопку, этот код выполняется:

- (IBAction)oneToSix {
    int rNumber = (arc4random() % 6) + 1;
    [result setImage:[UIImage imageNamed:[NSString stringWithFormat:@"%d", rNumber, @".png"]]];
}

, но изображение неизменить.

Кроме того, я получаю эти ошибки:

errors

Ответы [ 3 ]

4 голосов
/ 25 октября 2011

Вы перераспределяете переменные в области метода, которые уже были определены в области класса. Удалите деталь UIImageView * из вашей инициализации.

Примечание: он ничего не делает, когда вы меняете изображение, потому что в ObjectiveC допустим вызов метода для nil (неинициализированный элемент экземпляра), и он не дает видимого результата.

1 голос
/ 25 октября 2011
[result setImage:[UIImage imageNamed:[NSString stringWithFormat:@"%d", rNumber, @".png"]]];

Обратите внимание, что вы вводите только число в эту строку.Вам понадобится %d%@ в качестве формата.

Это не ошибки, а предупреждения.В вашем классе есть переменная экземпляра с именем background.Вы также объявляете локальную переменную с именем background в своем методе.Предупреждение состоит в том, чтобы сообщить вам, что существует конфликт и что он выбирает локальную переменную вместо переменной экземпляра.

0 голосов
/ 25 октября 2011

Изображение называется Red или Red.png?Поскольку, если это последнее, вы должны добавить расширение файла в методе setImage с помощью чего-то вроде [NSString stringWithFormat:@"%@.png", [defaults objectForKey:"colour"]]

Кроме того, вы вставляете result imageView дважды.Удалить первый.

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