UIAlertController не работает в режиме запуска в Swift 3 - PullRequest
0 голосов
/ 31 мая 2018

Мне не удается отобразить всплывающее окно с предупреждением при запуске моего представления.Код ниже.

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 ]

0 голосов
/ 31 мая 2018

проблема в том, что в viewDidLoad иерархия представления не полностью установлена.Если вы используете viewDidAppear, то иерархия установлена.

Если вы действительно хотите вызвать это предупреждение в viewDidLoad, вы можете сделать это, поместив вызов презентации в этот блок GCD, чтобы вызвать небольшую задержку

* 1004.*

или используйте в

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    startTest()
}
0 голосов
/ 31 мая 2018

Вызовите метод startTest() in 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);
}
0 голосов
/ 31 мая 2018

Просто попробуйте поставить его на viewDidAppear: метод

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