UIStackView - Layouteinschränkungen beim Verstecken von Stack-Ansichten

Meine app hat 2 Bildschirme:

  1. TableViewVC (kein stack Ansichten hier)
  2. DetailVC (alle geschachtelten stack-Ansichten hier; bitte siehe link für Bild: Verschachtelte StackViews Bild) -- Hinweis: Beschriftungen und Bilder innerhalb dieser Stapel Ansichten.

Wenn Sie drücken Sie auf eine Zelle im tableview, es geht die Informationen aus dem TableViewVC der DetailVC. Das problem ist mit versteckt die spezifischen UIStackViews in der DetailVC. Ich will nur 2 stack-Ansichten aus den verschiedenen in der DetailVC ausgeblendet werden, sobald die Ansicht geladen. Also Schreibe ich diesen code in der DetailVC, dies zu erreichen:

override func viewDidLoad() {
    super.viewDidLoad()

    self.nameLabel.text = "John"

    self.summaryStackView.hidden = true
    self.combinedStackView.hidden = true
}

Sieht alles toll aber Xcode geben viele Warnungen nur bei Laufzeit. Es gibt keine Warnung im Storyboard, wenn die app nicht läuft. Hier finden Sie den link zum Bild des errors: Bild von Fehler

Im Grunde ist es eine Menge UISV verbergen, UISV-Abstand, UISV-canvas-Verbindung Fehler. Diese Fehler verschwinden, wenn ich mich verstecken den gleichen stack Blick in viewDidAppear aber dann gibt es einen flash von dem Zeug, das soll ausgeblendet werden, und dann wird es versteckt. Der Benutzer sieht das die anzeigen kurz auf und dann ist er versteckt, das ist nicht gut.

Sorry für nicht in der Lage, um tatsächlich Bilder anstelle von links, noch nicht so.

Irgendwelche Vorschläge, wie man dieses Problem beheben? Das ist für eine app, die ich wirklich wollen, zu starten, um die app store - es ist mein erstes, so dass jede Hilfe wäre toll!

Edit/Update 1:

Ich fand eine kleine Arbeit, um mit diesem code die ich in den zweiten Bildschirm aufgerufen DetailVC:

//Function I use to delay hiding of views
func delay(delay: Double, closure: ()->()) {
    dispatch_after(
        dispatch_time(
            DISPATCH_TIME_NOW,
            Int64(delay * Double(NSEC_PER_SEC))
        ),
        dispatch_get_main_queue(), closure)
}

//Hide the 2 stack views after 0.0001 seconds of screen loading
override func awakeFromNib() {
    delay(0.001) { () -> () in
        self.summaryStackView.hidden = true
        self.combinedStackView.hidden = true
    }
}

//Update view screen elements after 0.1 seconds in viewWillAppear
override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    delay(0.1) { () -> () in
        self.nameLabel.text = "John"
    }
}

Dieser entledigt sich die Warnungen über die layout-constraints vollständig von Xcode.

Es ist noch nicht perfekt, weil manchmal sehe ich einen Einblick in die Ansichten, die eigentlich im verborgenen-Sie flash wirklich schnell auf dem Bildschirm dann wieder verschwinden. Dies geschieht so schnell, obwohl.

Irgendwelche Vorschläge, warum dies entledigt Warnungen? Auch alle Vorschläge zur Verbesserung dieser perfekt funktionieren??? Danke!

InformationsquelleAutor der Frage JEL | 2015-11-11

Schreibe einen Kommentar