代码之家  ›  专栏  ›  技术社区  ›  cdub

uialertcontroller在swift 3的启动视图中不工作

  •  3
  • cdub  · 技术社区  · 6 年前

    我的视图启动时似乎无法弹出警报视图。代码如下。

    import UIKit
    
    class StartController: UIViewController
    {
        override func viewDidLoad()
        {
            super.viewDidLoad()
    
            self.view.backgroundColor = UIColor.white;
    
            startTest();
        }
    
        func startTest()
        {
            let alerta = UIAlertController(title: "Invalid Test", message: "Testing alert controller", preferredStyle: UIAlertControllerStyle.alert);
    
            alerta.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil));
    
            self.present(alerta, animated: true, completion: nil);
        }
    }
    
    3 回复  |  直到 6 年前
        1
  •  4
  •   PPL    6 年前

    问题是在viewdidload中没有完全设置视图层次结构。如果使用viewDidAppear,则设置层次结构。

    如果您真的想在viewdidload中调用此警报,可以将演示调用包装在此gcd块中以引起轻微延迟。

     DispatchQueue.main.async {
        // Run UI Updates or call completion block
          startTest()
     }
    

    或用于

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        startTest()
    }
    
        2
  •  1
  •   Vinoth Vino iCyberPaul    6 年前

    打电话给 startTest() 在里面 viewDidAppear 方法。对我有用。

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        startTest()
    }
    
    
    func startTest()
    {
        let alerta = UIAlertController(title: "Invalid Test", message: "Testing alert controller", preferredStyle: UIAlertControllerStyle.alert);
    
        alerta.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil));
    
        self.present(alerta, animated: true, completion: nil);
    }
    
        3
  •  0
  •   Mahendra    6 年前

    试着穿上它 viewDidAppear: 方法

    override func viewDidAppear(_ animated: Bool)  {
          super.viewDidAppear(animated)
           startTest()
    }