繁体   English   中英

如何在ObjC中使用参数调用此方法

[英]How do I call this methods with a parameter in 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;
...

我收到一个错误:“ 请求成员'alpha'的东西不是结构或联合

Put- -changeImg: -fadeIn:之后-fadeIn: 更好的是,在文件顶部的类别中声明您的私有方法:

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

您不需要像这样传递self在同一个对象上调用的每个方法都将具有相同的self

通常会出现该警告,因为接口文件或.h文件中没有书面声明。

我假设fadeIn在myImgView类中,那么为什么要传递self? 使其成为[myImgView fadeIn]; 并将imgFade替换为self

源代码.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;

或有人说过,在@implementation之前放在源文件.m顶部。

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

设为私人

你已经倒退了。

[self fadeIn:myImgView];

您在当前类上声明fadeIn:我们将需要更多代码来查看它是哪一个),但在UIImageView实例(在您的情况下为myImgView )上调用它。

您应该在当前的类实现文件中私下声明它(如Jonathan Grynspan所 建议 )。 或者,如果您正在广泛使用此动画,请通过一个类别将其放入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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM