gpt4 book ai didi

ios - 在 iOS 中离开 View 之前要求用户确认

转载 作者:行者123 更新时间:2023-12-01 19:06:38 26 4
gpt4 key购买 nike

我需要出示 UIAlertView在用户离开某个 View 之前,通过点击“返回”导航栏按钮或点击我拥有的标签栏中的一个标签项目,以要求他确认。这将是一个两按钮警报,一个“取消”一个留在 View 中,一个“接受”一个离开。我需要这样做,因为我必须让用户知道,如果离开,未保存的更改将会丢失。

我试图通过在 viewWillDisappear: 中创建和显示警报 View 来做到这一点。方法:

- (void)viewWillDisappear:(BOOL)animated
{

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Exit", @"")
message:NSLocalizedString(@"Are you sure you want to leave? Changes will be discarded", @"")
delegate:self
cancelButtonTitle:NSLocalizedString(@"Cancel", @"")
otherButtonTitles:NSLocalizedString(@"Accept", @""), nil];

[alertView show];

[super viewWillDisappear:animated];
}

但是 View 无论如何都会弹出,并且在那之后显示警报 View 并且应用程序崩溃,因为它的委托(delegate)是已经从导航堆栈中弹出的 View Controller ......我找不到解决这种情况的方法,可以有人帮我吗?

谢谢!

最佳答案

当 viewWillDissapear 不起作用时显示警报 View ,因为该 View 已经消失,正在被删除。

您可以做的是在按下后退按钮时为自己添加一个自定义操作,然后您决定在按下后退按钮时要做什么,您可以显示警报 View ,然后在其中一个按钮中关闭 View ,像这样:

- (id)init {
if (self = [super init]) {
self.navigationItem.backBarButtonItem.target = self;
self.navigationItem.backBarButtonItem.action = @selector(backButtonPressed:);
}
return self;
}

然后在按下后退按钮时显示警报 View :
-(void)backButtonPressed:(id)sender
{
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Exit", @"") message:NSLocalizedString(@"Are you sure you want to leave? Changes will be discarded", @"") delegate:self cancelButtonTitle:NSLocalizedString(@"Cancel", @"") otherButtonTitles:NSLocalizedString(@"Accept", @""), nil];
[alertView show];
}

现在,当按下警报 View 中的确认按钮时,只需调用:
[self.navigationController popViewControllerAnimated:YES];

或者如果用户取消,什么也不做

关于ios - 在 iOS 中离开 View 之前要求用户确认,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19210686/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com