我是iOS开发的初学者。我正在尝试编写一个简单的应用程序,它有两个可能的结果与一个按钮相关联,具体取决于特定字段的变量。
当用户按下我的应用程序上的Walk按钮并且状态(变量)为Jumping时,会出现一个动作场景。
如果状态为Jumping且用户按下Walk,则会根据以下代码段弹出以下场景:
- (IBAction)walk:(id)sender {
if ([_personState.text isEqual: @"Jumping"])
{
UIActionSheet *actionsheet = [[UIActionSheet alloc]
initWithTitle:@"Invalid Action - Force?"
delegate:self
cancelButtonTitle:@"Cancel"
destructiveButtonTitle:nil
otherButtonTitles:@"Force", nil];
[actionsheet showInView:self.view];
}
else {_personState.text = @“Walking";}
}
当我点击Force时,personState不会更新为Walking。
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
if ([_personState.text isEqual: @"Jumping"] && buttonIndex == 0)
{
_personState.text = @"Walking";
}
我的if语句不正确吗?或者我又犯了一个错误?
答案 0 :(得分:0)
您正在使用isEqual:
,但我认为您希望改为使用isEqualToString:
。
isEqual比较指针,而isEqualToString比较字符串的值。
答案 1 :(得分:0)
学习调试,让您的生活更轻松。
在actionSheet中放置一个断点:clickedButtonAtIndex:
在Xcode类型
底部的调试区域中po _personState.text
然后输入
p buttonIndex
po =打印对象
p = print primitive
您甚至无需键入只需将鼠标悬停在变量上,它就会显示值