2

我在菜单中有一个按钮,当触摸它时,会弹出一条带有两个按钮的警报消息:“ Cancel”和“ Yes”。这是我的警报代码:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Exit game"
                                                message:@"Are you sure?"
                                               delegate:nil
                                      cancelButtonTitle:@"Cancel"
                                      otherButtonTitles:@"Yes", nil];
[alert show];

是否可以向按钮“ Yes”添加操作?

4

3 回答 3

11

在您的代码中设置 UIAlertView 委托:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Exit game" message:@"Are you sure?" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Yes", nil]; [alert show];

由于您已将委托设置为 self,请在同一类中编写委托函数,如下所示:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
if (buttonIndex == 1) { // Set buttonIndex == 0 to handel "Ok"/"Yes" button response
    // Cancel button response
    }}
于 2013-02-02T18:04:33.360 回答
1

您需要实施UIAlertViewDelegate

并添加以下...

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
    if (buttonIndex == 1) {
        // do stuff
    }
}
于 2013-02-02T17:54:46.117 回答
0

是的,这很容易。看到您现在设置为 nil 的名为“delegate”的参数了吗?将其设置为一个对象......如果您从视图控制器调用它,通常是“self”,然后为 UIAlertViewDelegate 实现选择器。

您还需要声明您的视图控制器符合 UIAlertViewDelegate 协议。这样做的好地方是在视图控制器的“私有”延续类中。

@interface MyViewController() <UIAlertViewDelegate>
@end

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
   NSLog(@"Button pushed: %d", buttonIndex);
}
于 2013-02-02T18:00:36.767 回答