2

我正在尝试从另一个类中更改alpha一个。UIButton在设置alpha我的 UIButton 的属性中调用的函数实际上是被调用的,因为我在NSLog那里放了一个,我可以看到它是如何工作的。如果您能给我任何建议,我将不胜感激。

这是我当前的代码。

视图控制器.h

- (void) setAlphaToButton;

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

视图控制器.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. 并且按钮不会改变。

4

3 回答 3

2

在您的代码中,分配并初始化了 ViewController 的一个实例,并在其上调用了 setAlphaToButton 方法。然后释放视图控制器,因为您没有保留它的对象。这就是为什么您看不到任何效果的原因;您调用该方法的 ViewController 实例永远不会出现在屏幕上。

目前尚不清楚您的代码应该如何工作;调用 tapDetected 时是否存在 ViewController 的实例?如果是这种情况,并且这是您想要更改其 alpha 的按钮的 ViewController,那么您需要引用ViewController 的实例并在其上调用 setAlphaToButton。

于 2013-02-23T19:41:49.030 回答
0

在您尝试设置 alpha 时,您的视图未加载!您需要在 viewDidLoad 触发后调用此方法。您可以通过调用 view 来强制它,但这是一种 hack,不推荐!

MyViewController *vc = [MyViewController new];
vc.view; // this string will force view loading 
[vc setAlphaToButton];
于 2013-02-23T21:03:57.050 回答
0

在 imageviewsubclass 中添加 uiviewcontroller 类的属性为

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

并在初始化 imageviewsubclass 的对象时在视图控制器类中用“self”初始化它并添加到视图中

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

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

并且在

- (void) tapDetected:(UITapGestureRecognizer *)tapRecognizer {
    [parent setAlphaToButton];
}
于 2013-02-25T09:38:58.613 回答