2010-08-11 42 views
0

我在ObjC和應用程序編程中很安靜。我想要做的就是在圖像中淡入淡出。爲此,我做到了這一點:如何使用ObjC中的參數調用此方法

-(IBAction)changeImg:(id)sender{ 
    myImgView.image = [UIImage imageNamed:@"image.png"]; 
    myImgView.alpha = 0; 
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:1]; 
    myImgView.alpha = 1; 
    [UIView commitAnimations]; 
} 

這很安靜。但現在我希望把淡入淡出功能爲自己的方法,我不知道如何調用該方法:

-(IBAction)changeImg:(id)sender{ 
    myImgView.image = [UIImage imageNamed:@"image.png"]; 
    [myImgView fadeIn:self]; 
} 

-(void) fadeIn:(UIImageView *) imgFade{ 
    imgFade.alpha = 0; 
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:1]; 
    imgFade.alpha = 1; 
    [UIView commitAnimations]; 
} 

當我調用該方法是這樣,我得到一個警告:」 ‘的UIImageView’可能不迴應'-fadeIn:'

任何人都可以幫助我嗎?


對不起,但我沒有得到它的工作。 警告依然存在。 當我這樣做kuroutadori建議:

... 
self.alpha = 0; 
... 

我得到一個錯誤: 「請求的東西成員‘阿爾法’不是一個結構或聯合

回答

0

你對你目前的類聲明fadeIn:(我們需要更多的代碼,看看它是哪一個)(在你的情況myImgView),但稱它在一個UIImageView實例。

您應該在您當前的類實現文件中私下聲明它(如Jonathan Grynspansuggested)。或者,如果你正在使用廣泛此動畫,把它變成自己的UIImageView通過類別:

@interface UIImageView (MyFade) 

- (void) fadeIn; 

@end 

,然後用

@implementation UIImageView (MyFade) 

- (void) fadeIn 
{ 
    self.alpha = 0; 
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:1]; 
    selfe.alpha = 1; 
    [UIView commitAnimations]; 
} 

@end 
0

的警告通常是,因爲在接口文件或.h文件中沒有書面聲明。

我認爲fadeIn是在myImgView類,所以你爲什麼要通過自我?只需製作[myImgView fadeIn];並用self替換imgFade即可。

代碼源.m

@implementation MyClass 
-(IBAction)changeImg:(id)sender{ 
    myImgView.image = [UIImage imageNamed:@"image.png"]; 
    [myImgView fadeIn]; 
} 

-(void) fadeIn{ 
    self.alpha = 0; 
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:1]; 
    selfe.alpha = 1; 
    [UIView commitAnimations]; 
} 
@end 

添加到您的標題.h

- (void) fadeIn; 

或者像有人說的,在源文件.m的@implementation之前上面放。

@interface MyClass() 
    - (void) fadeIn; 
@end 

爲了讓私人

+0

實現它這是行不通的。 – Crazer 2010-08-11 14:31:47

1

-changeImg:-fadeIn:後。更重要的是,在該文件的頂部聲明一個類別您的私有方法:

@interface MyClass (PrivateMethods) 
- (void)fadeIn: (UIImageView *)imgFade; 
@end 

你並不需要通過周圍self這樣的 - 每次你在同一對象上調用方法將具有相同self

+0

嗯,我似乎並沒有得到它。我做了所有更改,但警告仍然出現。 – Crazer 2010-08-11 14:44:33

+0

您是否用您的班級實際名稱替換了「MyClass」? – 2010-08-11 17:00:59

0

你已經得到它了。

[self fadeIn:myImgView];