如果激活与public class Singleton {
private static var sharedInstanceVar = Singleton()
public class func sharedInstance()->Singleton {
return sharedInstanceVar
}
}
public class SubSingleton: Singleton {
private static var sharedInstanceToken:dispatch_once_t = 0
public class override func sharedInstance()->SubSingleton {
dispatch_once(&sharedInstanceToken){
sharedInstanceVar = SubSingleton()
}
return sharedInstanceVar as! SubSingleton
}
}
相关联的UIImageViews
,我有八个UITapGestureRecognizer
。我已将所有识别器与此IBAction
:
- (IBAction)disableDie:(id)sender {
NSLog(@"%@", sender);
NSLog(@"%ld",[(UIGestureRecognizer *)sender view].tag);
}
我以为我可以用这样的循环来做到这一点:
- (IBAction)disableDie:(id)sender {
for (UIImageView *numberImage in self.diceOutletArray) {
if (numberImage == sender) {
numberImage.alpha = 0.65;
}
}
NSLog(@"%@", sender);
NSLog(@"%ld",[(UIGestureRecognizer *)sender view].tag);
}
但是被按下的UIImageView
没有任何反应,但是信息被打印出来了。我在其他循环中使用了diceOutletArray
并且它可以工作。
答案 0 :(得分:5)
发件人是UITapGestureRecognizer
,而不是UIImageView
因此numberImage == sender
永远不会成真。
请改为尝试:
- (IBAction)disableDie:(UIGestureRecognizer *)sender {
for (UIImageView *numberImage in self.diceOutletArray) {
if (numberImage == sender.view) {
numberImage.alpha = 0.65;
break;
}
}
}
你根本不需要循环,这也可以正常工作:
- (IBAction)disableDie:(UIGestureRecognizer *)sender {
sender.view.alpha = 0.65;
}
答案 1 :(得分:4)
手势识别器是发件人,而不是视图。你应该在sender
的打印输出中看到它。您需要获取识别器的视图(假设它直接附加到其图像视图)。
一旦你拥有了它,你真的不需要去寻找另一个指向视图的指针:你已经拥有了它。它只是调用sender.view
而不是mumbleMumbleImageView
。
只需将setAlpha:
发送到该指针即可。