【问题标题】:Changing a BOOL when UIView is touched触摸 UIView 时更改 BOOL
【发布时间】:2014-06-24 19:15:54
【问题描述】:

我正在尝试在触摸UIView 时对其进行更改。它是UIView 的子类,并有一个属性BOOL,称为“isSelected”。

创建视图时,我们将其设置为 YES:

self.isSelected = YES;

当视图被触摸时,以下运行:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

    if (self.isSelected) {
        self.isSelected = NO;
    } else if (!self.isSelected) {
        self.isSelected = YES;
    }

问题似乎是 isSelected 似乎总是被视为 NO 而不是 YES。做这个的最好方式是什么。

编辑:退出

-(void)setIsSelected:(BOOL)isSelected {
    NSLog(@"isselected chaned to: %@",isSelected ? @"Yes" : @"No");
}

【问题讨论】:

  • 仅供参考 - 您可以将这 4 行替换为 1:self.iSSelected = !self.isSelected;。这将切换值。
  • 谢谢@rmaddy - 我添加了一个 EDIT,它显示我注销了对 isSelected 的更改。我已将这些行更改为您的建议。我注意到更改始终显示为“是”。有什么不对吗?我需要正确记录它,以便当它直接从此视图更改为 YES/NO 或当它们所在的 VC 也为这些更新 isSelected 时,我可以调用不同的更新方法。谢谢
  • 如果您要覆盖setIsSelected: 方法,在方法中设置值会有所帮助。
  • 你是对的@rmaddy - 这个默认方法应该是什么?这是更改此属性时更改背景/钻孔器的正确方法还是有更好的方法?

标签: ios objective-c uiview boolean


【解决方案1】:

您覆盖的 setIsSelected: 方法永远不会更新该值。你想要:

-(void)setIsSelected:(BOOL)isSelected {
    _isSelected = isSelected;
    NSLog(@"isselected chaned to: %@",isSelected ? @"Yes" : @"No");
}

【讨论】:

    猜你喜欢
    • 2023-03-21
    • 2011-09-04
    • 1970-01-01
    • 2018-07-30
    • 1970-01-01
    • 1970-01-01
    • 2015-04-21
    • 1970-01-01
    • 2011-02-18
    相关资源
    最近更新 更多