UIAlertController在Storyboard上定制构建不能正常工作

时间:2018-04-16 14:32:38

标签: ios swift xcode storyboard uialertcontroller

我需要UIAlertController标题,说明和UIActivityIndicatorView。我有一组需要在webservice上下载的对象,向用户显示反馈我创建了一个UIAlertController并修改了描述conforms下载完成并开始,在serie中。所以,当我展示自定义的UIAlertController时,该视图会占用我应用的所有屏幕!我想只显示我在故事板上创建的小方框,如弹出窗口,以通知用户下载进度。

我试过这个:

Alerta.swift

class Alerta: UIViewController {

    @IBOutlet weak var indicatorView: UIActivityIndicatorView!
    @IBOutlet weak var lblTitle: UILabel!
    @IBOutlet weak var lblDesc: UILabel!

    var titulo: String?
    var descricao: String?

    override func viewDidLoad() {
        self.lblTitle.text = titulo
        self.lblDesc.text = descricao
        indicatorView.startAnimating()
    }

    override func viewWillDisappear(_ animated: Bool) {
        indicatorView.stopAnimating()
    }

}

为了测试我确实写了一些延迟的代码。

ViewControllerMain.swift

let customAlert = self.storyboard?.instantiateViewController(withIdentifier: "waitView") as! Alerta
    customAlert.providesPresentationContextTransitionStyle = true
    customAlert.definesPresentationContext = true
    customAlert.modalPresentationStyle = UIModalPresentationStyle.overCurrentContext
    customAlert.modalTransitionStyle = UIModalTransitionStyle.crossDissolve

    customAlert.titulo = "Título"
    customAlert.descricao = "Descrição 1"
    self.present(customAlert, animated: true, completion: nil)

    DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(2000)) {
        customAlert.lblDesc.text = "Descricao 2"
    }

    DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(4000)) {
        self.dismiss(animated: true, completion: nil)
    }

这是我的故事板 enter image description here

结果(糟糕):

enter image description here

1 个答案:

答案 0 :(得分:2)

您无法通过简单的过流背景演示来完成您所描述的内容。当前上下文是呈现视图控制器 - 此外,您的故事板主视图比您想要的视图大得多,并且运行时无法神奇地猜测视图的唯一相关部分是阴影部分。

如果你真的希望这是一个呈现的视图控制器,你需要使用自定义演示文稿并提供你自己的演示控制器,它将设置所呈现视图的框架。

但是,我建议您只创建并显示视图 - 在这个简单的场景中不需要一个成熟的呈现视图控制器。