我想有一個指向UIImage視圖的指針,這樣我就不必重複很多我的代碼。我需要根據它是哪個按鈕來選擇圖像,但最後我將相同的代碼應用於任何數字。 oneDigit
,twoDigit
和threeDigit
都是頭文件中的@property(nonatomic, retain)
。我希望imageView能夠指向這些UIImageView中的一個。現在UIImageViews不會被刪除removeFromSuperview
,因爲imageView
不是指向的對象,但創建自己的對象..你如何設置UIImageView指向另一個UIImageView
當前當按鈕被按下時,一個圖像被添加。我想刪除前一張圖片,並根據按下的按鈕繪製新圖片。代碼的工作原理是如何將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];
}
你「想要一個指向UIImageView的指針」,並且你的代碼包含一個指向UIImageView的指針。什麼是真正的問題?代碼不喜歡什麼? –
何時何地將值賦給'oneDigit','twoDigit'和'threeDigit'?在你的每個case語句中,你發送'removeFromSuperView'消息給它們,然後把它們分配給'imageView'。然後你創建一個新的'UIImageView'並將其分配給'imageView'。當然,無論你初始化「oneDigit」等,然後丟失? –
已更新的問題。我希望imageView指向oneDigit,以便方法末尾的代碼可以用於所有情況,但是當方法再次運行時,它將從屏幕中刪除一個數字。使用imageView它不會從屏幕上刪除任何東西。 – michaellindahl