TL; DR Yalnızca 1 rootViewController ve en son sunulanı olabilir. Bu nedenle, zaten reddedilmemiş bir tane sunulduğunda bir viewcontroller'ı başka bir viewcontroller sunmaya çalışmayın.
Kendi testlerimi yaptıktan sonra bir sonuca vardım.
Her şeyi sunmak istediğiniz bir rootViewController varsa, bu sorunla karşılaşabilirsiniz.
İşte rootController kodum (open, root'tan bir viewcontroller sunmak için benim kısayolum).
func open(controller:UIViewController)
{
if (Context.ROOTWINDOW.rootViewController == nil)
{
Context.ROOTWINDOW.rootViewController = ROOT_VIEW_CONTROLLER
Context.ROOTWINDOW.makeKeyAndVisible()
}
ROOT_VIEW_CONTROLLER.presentViewController(controller, animated: true, completion: {})
}
Eğer arka arkaya iki kez açık ararsam (geçen süre ne olursa olsun), bu ilk açıkta iyi çalışır, ancak ikinci açıkta DEĞİL. İkinci açık deneme yukarıdaki hataya neden olacaktır.
Ancak en son sunulan görünümü kapatın ve sonra açık çağrı, ben tekrar (başka bir viewcontroller) açık aradığınızda iyi çalışıyor.
func close(controller:UIViewController)
{
ROOT_VIEW_CONTROLLER.dismissViewControllerAnimated(true, completion: nil)
}
Ne sonuç var sadece MOST-RECENT-CALL rootViewController görünüm Hiyerarşisi üzerinde (onu kapatmak veya bir görünümü kaldırmak bile). Tüm yükleyici çağrıları (viewDidLoad, viewDidAppear ve gecikmeli gönderme çağrıları yapıyor) ile oynamaya çalıştım ve işe almak için tek yolu SADECE en üst görünüm denetleyicisinden mevcut çağırıyor olduğunu bulduk.
presentViewController:animated:completion
denetleyiciyi aramaya çalışmak dışında, aynı sorunu yaşıyorum . Bunu uygulama temsilcisinde mi yapıyorsunuz?