在alertView if语句中调用IBaction

时间:2013-02-13 22:55:02

标签: ios if-statement xcode4.5 uialertview ibaction

我和我的好友正在开发一个应用程序,我们是新手,但是书籍和风格都很长。

我们现在被困在这件事上了。我们有一堆texfields,我们通过此操作链接到它的清除按钮,但是如果您在其中一个警报视图按钮上单击“是”,我们希望调用该操作。

- (IBAction)clearText:(id)sender {

Spelare1Slag1.text = @"";
Spelare1Slag2.text = @"";

}

我们也有此警报视图:

        alertDialog = [[UIAlertView alloc]
    initWithTitle: @"Warning"
    message: @"Do you want to delete?"
    delegate: self
    cancelButtonTitle: @"No"
    otherButtonTitles: @"Yes", nil];

- (void)alertView: (UIAlertView *)alertView
clickedButtonAtIndex:(NSInteger)buttonIndex {
    NSString *buttonTitle=[alertView buttonTitleAtIndex:buttonIndex];
    if ([buttonTitle isEqualToString:@"No"]) {
    }

    else if ([buttonTitle isEqualToString:@"Yes"]){
        Spelare1Slag1.text = @"";
    }

}

所以这就是我们认为我们应该这样做的方式,但我们不知道在else if语句中放入什么。我们希望在警报视图中按“是”按钮时清除文本字段,而不是在按“否”时按

提前致谢!

4 个答案:

答案 0 :(得分:2)

如果用户点击了AlertView,您可以忽略NO如果我理解了问题。

你可以像这样解除警报视图

[alertView dismissWithClickedButtonIndex:0 animated:YES];

但请务必查看NO是否有索引0或1,如果您不确定那么只是这样做

[alertView dismissWithClickedButtonIndex:nil animated:YES];

答案 1 :(得分:2)

我假设clearText方法是您创建的自定义方法,用于删除两个字段中的文本吗?所以它不应该是IBAction,而应该是一个无效的方法:

- (void)clearText {
Spelare1Slag1.text = @"";
Spelare1Slag2.text = @"";
}

现在你需要在你的UIAlertView委托方法中做的就是调用clearText方法:

- (void)alertView: (UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
NSString *buttonTitle=[alertView buttonTitleAtIndex:buttonIndex];
  if ([buttonTitle isEqualToString:@"Yes"]){
      [self clearText];
  }
}

希望这有帮助

答案 2 :(得分:1)

类型IBAction的方法与任何其他方法一样,您可以直接在代码中调用它们。实际上,IBAction只是评估void的宏。通常,当需要在触发目标/操作事件的上下文之外调用时,您将传递nil sender参数。

[self clearText:nil];

答案 3 :(得分:1)

为什么需要检查实际的按钮文字?检查按钮索引是最有效的方法。如果在alertView中有两个字段,只需检查索引是0还是1,然后就可以了。你做额外的工作检查实际的文本。

顺便说一下,如果你不按要求做任何具体的事情,只需检查YES按钮的索引。 (如果不需要,请不要检查两个索引。)