2017-03-24 3 views
0

Ich möchte eine Unteransicht zu meinem Alarmcontroller hinzufügen. Aber warum gehen die Knöpfe oben? Wie behebe ich das Problem?UIAlertController: addSubview

let alert = UIAlertController(title: nil, message: nil, preferredStyle: UIAlertControllerStyle.alert) 

    let somethingAction = UIAlertAction(title: "Something", style: .default, handler: {(alert: UIAlertAction!) in print("something")}) 

    let cancelAction = UIAlertAction(title: "Annuler", style: .cancel, handler: {(alert: UIAlertAction!) in print("cancel")}) 

    alert.addAction(somethingAction) 
    alert.addAction(cancelAction) 

    let customView = UIView() 
    customView.backgroundColor = .green 
    customView.translatesAutoresizingMaskIntoConstraints = false 
    customView.widthAnchor.constraint(equalToConstant: 128).isActive = true 
    customView.heightAnchor.constraint(equalToConstant: 128).isActive = true 

    alert.view.addSubview(customView) 

    customView.centerXAnchor.constraint(equalTo: alert.view.centerXAnchor).isActive = true 
    customView.topAnchor.constraint(equalTo: alert.view.topAnchor).isActive = true 
    customView.bottomAnchor.constraint(equalTo: alert.view.bottomAnchor, constant: -32).isActive = true 
    self.present(alert, animated: true, completion:{}) 

enter image description here

+2

'UIAlertController' ist nicht entworfen, um das Hinzufügen von Unteransichten zu unterstützen. Wenn Sie eine benutzerdefinierte Warnung verwenden möchten, verwenden Sie eine benutzerdefinierte Warnung, nicht "UIAlertController". – rmaddy

+0

Probieren Sie http://stackoverflow.com/a/32790860/7250862 –

+0

@RajeshkumarR Danke, aber er verwendet eine Menge "/ n". Aber meine Sichthöhe ist dynamisch, also ist es keine gute Lösung für mich. – Louis

Antwort

1

UIAlertController ist ein ziemlich geschlossenes System. Es wurde entwickelt, um die Systemstandardwarnung zu sein. Sie sollten keine Unteransichten hinzufügen.

Ich würde einen benutzerdefinierten UIViewController erstellen, der als eine Warnung fungieren kann. Sie können den angepassten UIViewController-Übergang verwenden, damit UIAlertController genauso aussieht.

Es gibt auch viele GitHub-Projekte, die benutzerdefinierte Warnmeldungsstile bereitstellen, die Ihnen gefallen könnten. Wie dieser: https://github.com/DominikButz/DYAlertController

+0

Danke für deine Antwort :) – Louis

+0

Froh, dass es geholfen hat! Glückliche Kodierung :) –