我是 Cocoa 的新手,正在阅读 Hillegass 的书。我在第 20 章的挑战 2 中遇到了麻烦。
挑战在于添加复选框,以便在绘制的字母是斜体、粗体或两者兼而有之时进行切换。
-(IBAction)toggleItalic:(id)sender
{
int state = [italicBox state];
NSLog(@"state %d", state);
if (state = 1) {
italic = YES;
NSLog(@"italic is yes");
}
else {
italic = NO;
NSLog(@"italic is no");
}
}
现在,当选中该框时,这段代码将返回“yes”,在未选中该框时返回。我做错了什么?
谢谢
贾斯汀。
最佳答案
你的问题出在你的 if 语句上:
if (state = 1) {
您正在将状态分配给值1:state = 1
,而您需要测试的是状态当前是否为1:state ==1
这是一个相当常见的错误(特别是在允许在 if 语句中赋值的语言中)。学会解决这个问题的一个技巧是进行比较检查,如下所示:
if (1 == state)
您不能将 1
分配给其他值。因此,如果您错误地使用 =
而不是 ==
,您将收到编译器错误,并且很容易修复。
关于objective-c - 复选框状态问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1954187/