我正在更新iOS中的Objective-C应用程序,并且由于不赞成使用UIAlertView,因此我将UIAlertController和UIAlertAction用作“确定”和“取消”按钮。因此,对于后退按钮,我具有以下功能,但是我不知道如何处理“确定”和“取消”按钮,因为“确定”应让您返回到上一屏幕,而“取消”应使您停留在同一屏幕上。以下是我到目前为止的代码。
- (void)backAction:(id)sender
{
//do your saving and such here
if ([doneBtn isEnabled])
{
//CHANGE 2018
UIAlertController *alert = [UIAlertController alertControllerWithTitle: @"Alert" message:@"Signature will be lost. Do you want to continue?." preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *ok = [UIAlertAction actionWithTitle: @"Ok" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {
//should go to the previous scree.
//[alert dismissViewControllerAnimated:TRUE completion:nil]; //I'm not sure if this only hides the alert or hides the entire screen
}];
UIAlertAction *cancel = [UIAlertAction actionWithTitle: @"Cancel" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {
//should stay in the same screen
[alert dismissViewControllerAnimated:TRUE completion:nil]; //the same doubt
}];
[alert addAction: ok];
[alert addAction: cancel];
[self presentViewController:alert animated:YES completion:nil];
//UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"Alert" message:@"Signature will be lost. Do you want to continue?" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Ok",nil];
//[alert show];
}
答案 0 :(得分:1)
语句[alert dismissViewControllerAnimated:TRUE completion:nil]
只会关闭警报,因为它是屏幕上的顶部视图控制器。
因此,您的取消操作不需要执行任何其他操作。
对于您的确定操作,您有多个操作可以返回上一屏幕:
如果您的视图控制器仅是UIViewController
,只需调用[self dismissViewControllerAnimated:TRUEcomplete:nil]`
如果视图控制器已嵌入导航控制器中,请致电[self.navigationController popToRootViewControllerAnimated:YES]
。
您也可以对要返回的视图控制器使用展开按钮。
希望它能对您有所帮助! ;)
答案 1 :(得分:0)
当您点击其中一个按钮时,便会关闭警报,而不必致电[alert dismissViewControllerAnimated:TRUE completion:nil];
。
完成ok
按钮后,如果viewController嵌入在navigationController中,则可以使用[self.navigationController popToRootViewControllerAnimated:YES];
。
答案 2 :(得分:0)
以上答案正确。我实际上想发表评论,但我没有足够的声誉。
您应该尝试看一下该线程,以更好地理解关闭视图控制器。 Dismissing a Presented View Controller
答案 3 :(得分:0)
尝试一下,希望这可以解决您的问题。
UIAlertController * alert=[UIAlertController alertControllerWithTitle:@"Title"
message:@"Message"preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction* okButton = [UIAlertAction
actionWithTitle:@"Ok, please"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action)
{
[self okButtonPressed];
}];
UIAlertAction* cancelButton = [UIAlertAction
actionWithTitle:@"No, thanks"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action)
{
[self cancelButtonPressed];
}];
[alert addAction:okButton];
[alert addAction:cancelButton];
[self presentViewController:alert animated:YES completion:nil];
现在关闭视图控制器。
- (void)cancelButtonPressed{
// Write your implementation for Cancel button here.
}
- (void)okButtonPressed{
//Write your implementation for Ok button here
}