- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
目前正在学习objetive-c。浏览了各种书籍以及 lynda 网站上的一些教程,现在找到了我认为适合我学习风格的斯坦福类(class)。我一直在一遍又一遍地看前 3 个讲座,基本上是在做,直到我 100% 掌握了所教的内容,而且我已经不远了。
我很难理解以下代码的作用以及它如何导致我的按钮切换。
sender.selected = !sender.isSelected
我更愿意使用:
if (sender.selected)
{
sender.selected = NO;
} else {
sender.selected = YES;
}
为什么?因为这对我来说很有意义,而且很明显发生了什么,因为我过去在许多其他编程语言中使用过 if 语句。我实际上可以毫无问题地完成第一个作业,并且了解其中大部分内容,但是每当我删除我的代码并重新输入以练习这一部分时,我就会感到困惑,我觉得我在欺骗自己前进没有真正理解发生了什么。
我做了一些谷歌搜索并发现了这篇文章:How does sender.selected = ! sender.selected toggle between selected states?
当我通读时,感觉就像 Spark 在我的脑海中飞舞,但还不足以点燃“啊哈,我现在明白了”的火焰。
假设在我点击/单击我的按钮之前选择了按钮我的按钮。如何设置为选中?
我觉得有人可以用对我来说有意义的方式解释它。我知道一旦它在我脑海中,它将永远留在那里。我已经在这里坐了几个小时,试图仔细考虑一下。睡着了几次,然后决定需要帮助。
提前致谢
最佳答案
您的不自在可能源于人们学习编程时的一个共同挑战,从熟悉数字到编程中使用的许多类型。简而言之,类型是一组值以及一些关系,它们从集合中获取一个或多个值并产生集合中的另一个值。在现实世界中,这些集合可以是无限的 - 整数的数量是无限的 - 但在编程语言中,它们(通常)是有限的。
现在整数,又名整数,是一个集合,其值是熟悉的数字,基本操作是加、减、乘、求反等。在 (Objective-)C 中有多种整数类型 - 不同的集合具有不同的成员(member)人数;例如int
,unsigned long
。使用这种熟悉的类型,您是否对以下内容感到满意:
int x; // declare a variable which holds a value of type int
int y; // and another one
...; // other stuff
y = -x; // place in y the negation of the value in x
毫无疑问,您会感到很舒服,这只是您可能多年来一直在做的算术运算!在集合语言中,否定关系将 int 集合的一个成员映射到另一个成员。
现在编程语言处理的类型不仅仅是整数,但它们的基本概念都是相同的 - 具有基本关系集合的集合。
boolean 类型是大多数编程语言的核心。这是一个只有两个成员的集合; 真 和假;和基本关系and,or and not。 not 关系将 true 映射到 false,将 false 映射到 true。
在 Objective-C 中, bool 类型称为 BOOL
,YES
用于 true,NO
用于 false,基本关系是&&
(和)、||
(或)和 !
(不)。所以现在考虑:
BOOL x; // declare a variable which holds a value of type BOOL
BOOL y; // and another one
...; // other stuff
y = !x; // place in y the "not" of the value in x
与上面的整数情况的相似之处很明显 - 它只是集合和关系。
基于此,应该清楚:
sender.selected = !sender.isSelected
优于:
if (sender.selected)
{
sender.selected = NO;
}
else
{
sender.selected = YES;
}
后者使用控制语句 (if
) 来执行实际上等同于基本算术的操作。
bool 值、整数、 float 、字符等都只是类型,以相似的方式对待它们 - 您会编写出更好的代码。
HTH.
关于objective-c - sender.selected = !sender.isSelected 到底做了什么导致我的按钮切换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18432107/
这个问题在这里已经有了答案: UICollectionView - didDeselectItemAtIndexPath not called if cell is selected (8 个回答)
我想将选定的选项卡背景设置为红色,而未选择的选项卡背景设置为绿色。但是,只有未选中的选项卡在更改时才会显示为绿色。选择保持白色。
我正在尝试更改 TreeView 中的 SelectedItem 模板。我按照描述在 Style.Triggers 中编写了简单的容器样式和更改项目模板 [1]: How do I highlight
我有一个包含各种项目的 TreeView。项目的样式使得 IsSelected 属性绑定(bind)到我的 VM 到 bool IsSelected。 每当我单击 TreeView 项时,都会调用此
我意识到这可能是菜鸟问题的定义,但我很困惑,非常感谢任何帮助。 我有一个 actionlistener 和 JRadioButton,它们是在 ValublesMain 类中声明的,如下所示。 JRa
我正在尝试用 Selenium 测试一组单选按钮。我已将它们分组在一个列表中 @FindBy(xpath = "//ux-button-group//input[@name='options']")
我使用 isSelected 作为复选框。调试显示该方法无论是否选中都返回false,没关系。 来自 xml 的部分: 和代码: @Override protected void onCr
好吧,我想做的是在选择 JRadioButton 时更改它们的文本,我让它们更改颜色。我知道我可以通过将代码放入特定于每个按钮的专用事件处理方法中来更改文本来做到这一点,但是我该如何做到这一点,以便我
我还是没明白。能否请您准确地告诉我如何覆盖 ListBox 的默认行为。 每次选择 ListBoxItem 时,都应更改边框的背景。不是整行的背景,而是指定的边框的背景。
我有一组绑定(bind)到 ListBox 的 ViewModel。我正在尝试将每个的 IsSelected 属性绑定(bind)在一起。在 WPF 中,它通过设置样式来工作: 这在 S
我目前正在设计我的应用程序 (WPF),我正在尝试更改 DatagridRow 的 IsSelected 的设计。 XAML:
我制作了一个自定义渐变按钮,这样我就可以更改不同状态下的渐变颜色: class GradientButton: UIButton { public var buttongradient: CAGrad
我目前正在重构我制作的一个线程安全的应用程序。 我有一个需要检查的 JCheckBox。此 JCheckBox 在整个程序中的各种不同线程中被引用。 我可以简单地调用 checkbox.isSelec
我有一个单选组,定义了两个黑色和彩色按钮。当我尝试根据选择进行计算时,什么也没有发生。知道为什么我的单选按钮不起作用吗?谢谢 public void onClick(V
您好,我正在尝试显示 JTAppleCalendar 选择的当前日期,但我希望它不要触发 isSelected,因为我想在用户实际选择日期时显示时间选择器,而不是在加载日历时触发与当前日期 选中单元格
我有一个函数,其目的是更改单选按钮的状态,它看起来像这样: public void changeRadioState(List radioButtons){ for(WebEle
下面的代码用于在选择 3 个按钮中的任何一个时更改背景颜色:红色、绿色或蓝色。当我选择其中任何一个时,实际上什么也没有发生。但是,从 JButtons 更改为 JRadioButtons 或 JTog
我在 C#/WPF 中有一个相当大的应用程序,它是用 MVVM 制作的(有点)。 在 ListView 中,我使用 IsSelected 绑定(bind)到所选项目。这些 IsSelected 属性位
我在 JTable 中有一个 JComboBox,正在查看解释参数的 getTableCellRendererComponent 文档。 table - the JTable that is aski
我正在创建一个带有 3 个按钮、3 个复选框和 3 个单选按钮的 JFrame。我遇到按下 3 个按钮中的 1 个按钮时执行的功能的问题。这是函数: private void setCenterCol
我是一名优秀的程序员,十分优秀!