首页 文章

UIAlertController口吃的后续演示

提问于
浏览
0

在我为我的公司开发的内部应用程序(我用Swift编写的iPad应用程序)中的一个非常加载的ViewController中,我在几种情况下呈现警报风格的UIAlertControllers . 第一次显示警报时,它始终显示非常流畅 . 然而,警报的任何后续显示最终都会非常恶劣,即使对于没有很多代码来展示和解雇的警报也是如此 .

例如,如果用户在进行更改后尝试关闭vc而不保存(简单的条件为“if bool_Saved == false ”),则会显示一条警告,询问他们是否确定要退出而不保存 . 如果他们选择是,则vc被解雇,否则,警报将被解除 . 警报动画的第一次创建和呈现顺利进行,但无论何时此条件或任何其他代码需要提供警报,演示文稿都会在动画中停滞不前 .

这个vc上的用户界面很漂亮 . 整个屏幕是一个带有contentView的scrollView,其中包含10个子UIViews,每个子UIViews有3个UITextFields,~9个UILabels和~8个UIButtons(该公司想要一个他们一直使用的纸质形式的精确数字复制品) . 关闭vc并重新加载它会导致下一个警报再次平滑显示,但是后续警报再次通过其当前动画停顿 .

我已经开始在仪器中进行分析,但是我对它有点缺乏经验并且打算今天大部分时间使用各种工具来更熟悉各种工具,希望找到这个问题的来源 . 我想知道的是,是否有人对可能导致这种口吃问题的原因有任何建议 .

谢谢,如果我能提供任何其他信息,请告诉我 .

使用上述代码段进行编辑:

func cancelTapped() {
    if savedOnce == false {
        let alert_Exit = UIAlertController(title: "Exit Inspection?", message: "Unsaved changes to the sheet will be lost upon exit.  Are you sure you want to exit without saving?", preferredStyle: .alert)
        let action_No = UIAlertAction(title: "No", style: .cancel, handler: nil )
        let action_Yes = UIAlertAction(title: "Yes", style: .default, handler: { [unowned self]
            (action) in
            self.exitSheet()
        })
        alert_Exit.addAction(action_No)
        alert_Exit.addAction(action_Yes)

        present(alert_Exit, animated: true, completion: nil)
    } else {
        exitSheet()
    }
}

1 回答

  • 0

    你没有解雇警报 . 在“是”按钮中插入该行 .

    let action_Yes = UIAlertAction(title: "Yes", style: .default, handler: { [unowned self]
            (action) in
            alert_Exit.dismiss(animated: true)
            self.exitSheet()
        })
    

    当您第二次创建警报时,它可能会导致与您视图中某处未被解雇的隐藏的先前警报发生冲突 . 如何加载VC,它可能没有任何区别 .

    无论如何,样式 .cancel 将自行删除,而 .default 将要求您删除警报 .

相关问题