从另一个类修改UIButton的alpha属性

我试图改变从另一个类UIButtonalpha 。 在设置我的UIButton的alpha属性中调用的函数实际上被调用,因为我已经把NSLog放在那里,我可以看到它是如何工作的。 如果你能给我任何build议,我会很感激。

这是我目前的代码。

ViewController.h

 - (void) setAlphaToButton; @property (strong, nonatomic) IBOutlet UIButton *myButton; 

ViewController.m

 @synthesize myButton; - (void) setAlphaToButton { myButton.alpha = 0.5; NSLog(@"Alpha set"); } 

ImageViewSubclass.m

 - (void) tapDetected:(UITapGestureRecognizer *)tapRecognizer { ViewController *VC = [[ViewController alloc] init]; [VC setAlphaToButton]; } 

当图像视图被按下时,在我的控制台中,我得到: Alpha set 。 而button不会改变。

在你的代码中,ViewController的一个实例被分配和定位,并调用setAlphaToButton方法。 然后视图控制器被释放,因为你没有任何对象保留它。 这就是为什么你没有看到任何效果。 您调用方法的ViewController实例从不出现在屏幕上。

目前还不清楚你的代码应该如何工作。 当tapDetected被调用时,你有一个ViewController的实例吗? 如果是这种情况,并且这是ViewController的button,你想改变它的alpha值,那么你需要引用这个 ViewController的实例,并在其上调用setAlphaToButton。

您试图设置阿尔法的那一刻,您的视图不会被加载! 你需要在你的viewDidLoad被触发后调用这个方法。 你可以强制它通过调用视图,但它是一种黑客,不build议!

 MyViewController *vc = [MyViewController new]; vc.view; // this string will force view loading [vc setAlphaToButton]; 

在imageviewsubclass中添加uiviewcontroller类的属性为

 ImageViewSubclass.h @propery (nonatomic, retain) uiviewController *parent; ImageViewSubclass.m @synthesize parent; 

并且在viewviews类的初始化对象中添加视图控件类中的“自己”,并在视图上添加

 ImageViewsubclass *oneObj = [ImageViewsubClass alloc] init]; oneOBj.parent = self; 

对ImageviewsubClass对象的所有对象执行相同的操作。

和在

 - (void) tapDetected:(UITapGestureRecognizer *)tapRecognizer { [parent setAlphaToButton]; }