Objective c uicontrol状态选择| uicontrol状态禁用,目标C解释
我正在做斯坦福大学的课程作业,他发布了这个代码 uicontrol状态选定| uicontrol状态禁用 这到底意味着什么?操作数做什么 另外,我正在尝试使用此代码设置按钮的值,但它不起作用,有帮助吗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
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];