Objective c uicontrol状态选择| uicontrol状态禁用,目标C解释

Objective c uicontrol状态选择| uicontrol状态禁用,目标C解释,objective-c,ios6,cs193p,Objective C,Ios6,Cs193p,我正在做斯坦福大学的课程作业,他发布了这个代码 uicontrol状态选定| uicontrol状态禁用 这到底意味着什么?操作数做什么 另外,我正在尝试使用此代码设置按钮的值,但它不起作用,有帮助吗 if(!sender.isSelected){ [sender setTitle:self.deck.drawRandomCard.contents forState:UIControlStateSelected]; } else { [sender set

我正在做斯坦福大学的课程作业,他发布了这个代码 uicontrol状态选定| uicontrol状态禁用 这到底意味着什么?操作数做什么

另外,我正在尝试使用此代码设置按钮的值,但它不起作用,有帮助吗

if(!sender.isSelected){
        [sender setTitle:self.deck.drawRandomCard.contents forState:UIControlStateSelected];
    } else {
        [sender setTitle:@"" forState:UIControlStateDisabled];
    }
|是什么意思(对于UIButton州的情况)? 这意味着在同时选择和禁用按钮时应用属性

据我所知,|运算符表示按位或。但不知何故,当按位或uicontrol状态组合在一起时,必须同时满足它们才能产生效果。是的,这很奇怪,但根据我的经验,这就是它目前的表现

看看这里的另一个答案,这表明它的行为也与我所说的一样:

因此,例如,当用户高亮显示最初选定的按钮时,您可以为该uicontrol状态高亮显示| uicontrol状态选定状态应用特定标题

现在,了解哪些代码不起作用: 当按钮被选中(或对else块禁用)时,代码只是设置按钮的标题,但这并不意味着它将使按钮被选中(或禁用)

您需要选择(或禁用)按钮属性以查看标题的更改

这些属性(如已启用、已选择、高亮显示)可以通过手指触摸触发,也可以通过编程方式设置这些属性。请查看包含列出的属性的

例如:

myButton.enabled = NO;
myButton.highlighted = YES;
myButton.selected = YES;

按钮有许多状态表示为枚举值。您在这里看到的只是其中的两个:

UIControlStateSelected|UIControlStateDisabled
UIControl.h
中的整个列表:

typedef NS_OPTIONS(NSUInteger, UIControlState) {
    UIControlStateNormal       = 0,
    UIControlStateHighlighted  = 1 << 0,      // used when UIControl isHighlighted is set
    UIControlStateDisabled     = 1 << 1,
    UIControlStateSelected     = 1 << 2,      // flag usable by app (see below)
    UIControlStateApplication  = 0x00FF0000,  // additional flags available for application use
    UIControlStateReserved     = 0xFF000000   // flags reserved for internal framework use
};
因此,我们通常使用位OR运算符来组合这些标志:

0000 0001 | 0000 0010 = 0000 0011
最后,当组合这些标志并将它们发送给方法以设置标题时,您告诉底层实现在单个方法调用中更改这两个选项的标题

至于关于不工作的代码的第二个问题,描述“不工作”是什么意思会很有用。它会崩溃吗?您想要的输出是什么


编辑:

我刚刚读了评论,这个答案似乎还需要涵盖一些问题:

为了实用地更改按钮的状态,您应该调用以下命令:

[sender setEnabled:NO];
您刚才的代码告诉按钮在变为禁用状态后显示该文本


关于
|
操作符的另一个问题,这当然是一个OR操作,只是没有一点明智的OR。此运算符用于布尔表达式,而不是按位操作。

|
运算符是“按位或”运算符。这并不意味着“同时”。@rmaddy。谢谢更新了我的答案。我将如何选择或禁用按钮属性?我想当应用程序运行时,如果我在视图中单击它,它会被选中?也不会是and或操作数,或者它只存在于C@user2076774中,|是按位OR,但似乎是UIButton状态的错误。这里找到的答案也是这样的:而且也是基于我自己的编码经验。您可以尝试自己运行代码。@rmaddy它是“按位或”运算符,但它的意思是“同时”。至少对于UIButton.Objective-C是C的超集。
|
运算符是C中的“按位或”运算符。快速搜索以查看其作用。
0000 0001 | 0000 0010 = 0000 0011
[sender setEnabled:NO];