我有这个代码,我希望使用UIAlertAction显示带有YES或NO响应的消息;这是我的代码:
-(void) displayAlert: (NSString *)alertTitle andMessage: (NSString *)alertMessage andViewController: (UIViewController *) viewController andTag:(int)tag {
// create controller
UIAlertController *alertController = [UIAlertController
alertControllerWithTitle:alertTitle
message:alertMessage
preferredStyle:UIAlertControllerStyleAlert];
// add buttons
if(tag == 0) { // ok/cancel response
UIAlertAction *cancelAction = [UIAlertAction
actionWithTitle:NSLocalizedString(@"Cancel", @"Cancel action")
style:UIAlertActionStyleCancel
handler:^(UIAlertAction *action)
{
}];
UIAlertAction *okAction = [UIAlertAction
actionWithTitle:NSLocalizedString(@"OK", @"OK action")
style:UIAlertActionStyleDefault
handler:^(UIAlertAction *action)
{
}];
[alertController addAction:cancelAction];
[alertController addAction:okAction];
}
else if(tag == 1) { // yes/no response
UIAlertAction *noAction = [UIAlertAction
actionWithTitle:NSLocalizedString(@"No", @"No action")
style:UIAlertActionStyleCancel
handler:^(UIAlertAction *action)
{
}];
UIAlertAction *yesAction = [UIAlertAction
actionWithTitle:NSLocalizedString(@"Yes", @"Yes action")
style:UIAlertActionStyleDefault
handler:^(UIAlertAction *action)
{
}];
[alertController addAction:noAction];
[alertController addAction:yesAction];
}
// display controller
[viewController presentViewController: alertController animated:YES completion:nil];
}
我的问题是该块不允许返回(根据docs)。那么如何将响应返回给调用方法呢? (它不是内联的,它是一类常用的方法,因为它经常被使用)。
答案 0 :(得分:2)
您无法获得阻止的返回值。相反,您可以执行以下操作:
displayAlert
方法。并在此块定义中包含一个参数,该参数表示按下按钮(是/否或其他)这样你的应用程序代码就可以定义一个完成块,它将在两种情况下执行(当用户点击是或否时),你可以在那里处理它。