Voglio mostrare una vista - PresentedView
su un'altra vista - Background View
utilizzando iOS 7. Nella mia app, sto usando UITabBArController
, quindi in fase di esecuzione non so quale vista sarebbe la vista di sfondo (potrebbe essere uno qualsiasi degli elementi della barra delle schede). Qui di seguito è la struttura:UIModalPresentationStyle.CurrentContext Swift iOS 7
UITabBarController
---> TabItem1 - FirstUIViewController
---> TabItem2 - SecondUIViewController
---> TabItem3 - ThirdUIViewController
bisogno di qualcosa come questo:
Quando carichi app, sono su TabItem1 - FirstUIViewController
. Quando clicco su TabItem3
, voglio che FirstUIViewController
compaia in FirstUIViewController
e "FirstUIViewController" dovrebbe apparire in background senza che l'interazione dell'utente sia abilitata.
Quello che ho fatto finora:
Dal momento che,
UIViewControllers
sono aggiunti comeRelationship Controllers
apparire comeTabBar Item
in `UITabBarController, ho aggiunto un segue da tabbarcontroller a ThridViewController.Cambiato PresentationStyle per questo Segue a UIModalPresentationStyle.CurrentContext e ha fatto seguito la modifica
func `viewDidLoad()` { super.viewDidLoad() self.performSegue("identifier", sender: self) }
Non succede nulla e mi basta vedere 'ThridViewController' con sfondo bianco
Ho provato l'approccio di codifica manuale:
func `viewDidLoad()` { super.viewDidLoad() let overlayController:UIThirdViewController = UIThirdViewController() //This controller has a view added on top of it, which covers top half screen only overlayController.modalPresentationStyle = UIModalPresentationStyle.CurrentContext self.presentViewController(overlayController, animated: true, completion: nil) }
Nessun cambiamento. Nuova vista sovrascrive la vista precedente. se aggiungo questo overlayController.view.backgroundColor = UIColor.clearColor()
, vedo la metà dello schermo nero e mezzo contenente la mia nuova vista
Problema Punti:
- Dove devo scrivere il codice per inizializzare/chiamare ThirdViewController a comparire in cima di vista corrente?
- Come risolvere il problema dello schermo nero e farlo funzionare su iOS 7?
Sto utilizzando Xcode 7 e in esecuzione su iOS7. Per favore aiuto. Sarà apprezzato lo snippet di codice di lavoro. Non inviare altri messaggi di overflow dello stack come risposta, a meno che il codice non funzioni & da te provato.
UPDATE: - Con questo approccio, ottengo uno schermo nero
class TabBarViewController: UITabBarController, UITabBarControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
self.delegate = self
}
func tabBarController(tabBarController: UITabBarController, shouldSelectViewController viewController: UIViewController) -> Bool {
let switchController:UIViewController = SwitchViewController()
self.presentingViewController?.modalPresentationStyle = UIModalPresentationStyle.CurrentContext
self.presentingViewController?.view.backgroundColor = UIColor.clearColor()
self.presentViewController(switchController, animated: true, completion: nil)
return false
}
}
Funziona su iOS 7? – Sategroup
Sì, credo che queste API siano presenti da iOS 5, osservando il supporto della versione per addChildViewController. – bobics