2015-08-17 8 views
7

Ho la seguente configurazione:Rilassatevi Segue da modale/Popover conseguente chiamate non bilanciati per iniziare/fine transizioni aspetto

Nav Controller -> VC1 -Push -> VC2 -PopOver o Modal Segue -> VC3.

VC3 è lo svolgimento indietro a VC1.

Quando la Segue da VC2 al VC3 è Popover e modale, di svolgimento termina in un avvertimento: chiamate sbilanciate per iniziare/transizioni apparenza fine per UIViewController"

Se la Segue da VC VC è spinta, l'avvertimento è andato.

enter image description here Qualsiasi idea di come sbarazzarsi di avvertimento o perché la sua anche mostrando?

+0

ancora in corso ora ... – DogCoffee

risposta

7

e 'un bug. ignorare (o, se si vuole essere un buon cittadino, un bug report con Apple)

0

Sono stato in grado di riprodurre il problema e trovare una soluzione!

Sarebbe bello se la logica del relax si occupasse di questo. Forse è un bug, forse no. In entrambi i casi, la soluzione è di rendere VC2 (il controller che ha il popup) l'obiettivo del riavvolgimento, quindi attendere che finisca di apparire prima di far apparire il controller nav. Ciò garantisce che l'animazione di riavvolgimento (popup inverso) abbia tempo sufficiente per terminare prima di spostarsi più indietro. Anche con le animazioni disattivate, è ancora necessario attendere altrimenti si ottiene l'errore.

Il codice per VC2 deve essere il seguente. (Swift)

class VC2: UIViewController { 
    private var unwind = false 
    @IBAction func unwindToVC1(segue:UIStoryboardSegue) { 
     unwind = true 
    } 

    override func viewWillAppear(animated: Bool) { 
     super.viewWillAppear(animated) 

     if unwind { 
      self.navigationController?.popViewControllerAnimated(false) 
     } 
    } 
} 
Problemi correlati