IOS:UIAlert中的两个按钮控件

时间:2011-06-01 11:09:34

标签: objective-c xcode ios uialertview

我在IBAction中有这段代码:

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"NO!" 
                                                        message:@"danger"
                                                       delegate:self 
                                              cancelButtonTitle:@"OK"
                                              otherButtonTitles:@"Annul", nil];

    [alertView show];
    [alertView release];

现在,如果我推“好”它必须做一件事,如果我推“Annul”它必须做另一件事。但必须在IBAction内部完成。

2 个答案:

答案 0 :(得分:9)

您需要实施UiAlertViewDelegate方法。

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex

因此委托函数应如下所示。

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
  {
          if(buttonIndex == 0)//OK button pressed
          {

          }
          else if(buttonIndex == 1)//Annul button pressed.
          {

          }
  }

答案 1 :(得分:1)

Jhaliya的答案很棒,但它没有解决blackguardian在IBAction方法中运行此问题的请求。拥有IBAction方法块并等待来自UIAlertView的响应是在CocoaTouch中工作的错误方法。 IBAction应该只呈现UIAlertView。那么Jhaliya答案中的委托函数应该解析哪种方式继续,“OK”或“Annul”。然后,该委托函数可以执行操作(可能通过调用其他方法)。 CocoaTouch的事件处理不是为IBAction方法设计的,以阻止等待进一步的用户输入。

在不使用IBAction->UIAlertView->alertView:clickedButtonAtIndex:时,将链IBAction视为UIAlertView,并将当前代码放在此链后的IBAction中。