gpt4 book ai didi

ios - 关闭 UIAlertController 时调用 UINavigation 的 dismissViewControllerAnimated 方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:24:58 24 4
gpt4 key购买 nike

我在理解 iOS View Controller 和警报 Controller 在特定情况下的工作方式时遇到了问题:

我有一个自定义的 UINavigationController,其中有我的 UIViewController。我的导航 Controller 覆盖了 dismissViewControllerAnimated:completion 方法。从这个 UIViewController 我展示了新的 UIAlertController。在用户单击警报中的任何按钮之前,一切正常。但是,奇怪的是,正在调用我的自定义 UINavigationController 的 dismissViewControllerAnimated:completion 方法(如果可能的话,我不希望这样...)

警报以常规方式呈现(从 UINavigationController 中的 UIViewController):

UIAlertController *alert = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert];

UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"yep" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
[self takeOrder:data];
}];

UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"nope" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {

}];

[confirmOrderAcceptAlert addAction:okAction];
[confirmOrderAcceptAlert addAction:cancelAction];

[self presentViewController:alert animated:YES completion:nil];

是否有任何选项可以防止这种行为?为什么首先会发生这种情况?

编辑:dismissViewControllerAnimated:completion 的代码:

- (void)dismissViewControllerAnimated:(BOOL)flag completion:(void (^)(void))completion {
self.isHeroEnabled = NO;
[super dismissViewControllerAnimated:flag completion:completion];
}

我正在使用 Hero动画转换的库,可能是这种情况吗?

最佳答案

因为您是 UINavigationController 的子类,它肯定会调用 dismissViewControllerAnimated:completion。

为避免干扰库代码,请检查特定的 ViewController 类型。

例如:

- (void)dismissViewControllerAnimated:(BOOL)flag completion:(void (^)(void))completion {
if(![self.visibleViewController isKindOfClass:[UIAlertController class]]){
self.isHeroEnabled = NO;
}
[super dismissViewControllerAnimated:flag completion:completion];
}

关于ios - 关闭 UIAlertController 时调用 UINavigation 的 dismissViewControllerAnimated 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43237667/

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