我正在尝试从另一个班级更改alpha
的{{1}}。实际上调用了设置我的UIButton的UIButton
属性的函数,因为我在那里放了一个alpha
,我可以看到它是如何工作的。如果你能给我任何建议,我会感激不尽。
这是我目前的代码。
ViewController.h
NSLog
ViewController.m
- (void) setAlphaToButton;
@property (strong, nonatomic) IBOutlet UIButton *myButton;
ImageViewSubclass.m
@synthesize myButton;
- (void) setAlphaToButton {
myButton.alpha = 0.5;
NSLog(@"Alpha set");
}
按下图像视图后,在我的控制台中,我得到:- (void) tapDetected:(UITapGestureRecognizer *)tapRecognizer {
ViewController *VC = [[ViewController alloc] init];
[VC setAlphaToButton];
}
。按钮不会改变。
答案 0 :(得分:2)
在您的代码中,分配并引入ViewController的实例,并在其上调用方法setAlphaToButton。然后释放视图控制器,因为您没有保留它的对象。这就是你没有看到任何效果的原因;您调用方法的ViewController实例永远不会出现在屏幕上。
目前尚不清楚你的代码应该如何工作;调用tapDetected时是否有ViewController实例?如果是这种情况,并且这是你想要改变其alpha按钮的ViewController,那么你需要引用那个 ViewController实例并在其上调用setAlphaToButton。
答案 1 :(得分:0)
您尝试设置Alpha时,您的视图未加载!您需要在viewDidLoad触发后调用此方法。你可以通过调用view来强制它,但不建议使用hackand!
MyViewController *vc = [MyViewController new];
vc.view; // this string will force view loading
[vc setAlphaToButton];
答案 2 :(得分:0)
在imageviewsubclass中添加uiviewcontroller类的属性为
ImageViewSubclass.h
@propery (nonatomic, retain) uiviewController *parent;
ImageViewSubclass.m
@synthesize parent;
用" self"初始化它。在视图控制器类中初始化imageviewsubclass的对象并在视图上添加
ImageViewsubclass *oneObj = [ImageViewsubClass alloc] init];
oneOBj.parent = self;
对ImageviewsubClass对象的所有对象执行相同的操作。
并在
- (void) tapDetected:(UITapGestureRecognizer *)tapRecognizer {
[parent setAlphaToButton];
}