我在IBAction中有这段代码:
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"NO!"
message:@"danger"
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:@"Annul", nil];
[alertView show];
[alertView release];
现在,如果我推“好”它必须做一件事,如果我推“Annul”它必须做另一件事。但必须在IBAction内部完成。
答案 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
中。