从另一个类修改UIButton的alpha属性
我试图改变从另一个类UIButton
的alpha
。 在设置我的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]; }