Я хочу иметь указатель на представление UIImage, чтобы мне не пришлось много повторять мой код. Мне нужно выбрать изображение в зависимости от того, какая кнопка, но затем в конце я применяю один и тот же код к любой цифре. oneDigit
, twoDigit
и threeDigit
- все @property(nonatomic, retain)
в заголовочном файле. Я хочу, чтобы imageView мог указывать на один из этих UIImageViews. Прямо сейчас UIImageViews не удаляются с removeFromSuperview
, потому что imageView
не указывает на объекты, но создает свой собственный объект ..
В настоящее время при нажатии кнопки изображение добавляется. Я хочу, чтобы предыдущее изображение было удалено, а новое изображение нарисовано в соответствии с тем, какая кнопка была нажата. Код работает так, как я хочу, если я заменю imageView на oneDigit, но для этого потребуется добавить больше кода для каждой переменной.
См. Упрощенный пример ниже:
- (void)viewDidLoad
{ ...
UIImageView *oneDigit;
UIImageView *twoDigit;
UIImageView *threeDigit;
}
-(IBAction)pressButton:(id)sender {
UIImage *image;
UIImageView *imageView;
UIButton *btn = (UIButton*)sender;
int value = [btn.titleLabel.text intValue];
switch (value) {
case 10:
case 15:
case 20:
[twoDigit removeFromSuperview]; //Remove old image from screen
imageView = twoDigit; //Update imageView pointer for current case
image = [UIImage imageNamed:@"twoDigit.png"];
break;
case 1:
case 2:
case 3:
case 4:
case 5:
[oneDigit removeFromSuperview];
imageView = oneDigit;
image = [UIImage imageNamed:@"oneDigit.png"];
break;
case 100:
case 200:
case 300:
[threeDigit removeFromSuperview];
imageView = threeDigit;
image = [UIImage imageNamed:@"threeDigit.png"];
break;
default:
break;
}
CGPoint point = btn.frame.origin;
CGFloat xposition = point.x - ((image.size.width - btn.frame.size.width) /2);
CGFloat yposition = point.y - ((image.size.height - btn.frame.size.height) /2);
imageView = [ [ UIImageView alloc ] initWithFrame:CGRectMake(xposition, yposition, image.size.width, image.size.height) ];
imageView.image = image;
imageView.contentMode = UIViewContentModeCenter;
[self.view addSubview:imageView];
}