Я хочу показать View - PresentedView
над другим представлением - Background View
с помощью iOS 7. В моем приложении я использую UITabBArController
, поэтому во время выполнения я не знаю, какой вид будет фоном (может быть любой из элементов панели вкладок). Ниже приведена структура:
UITabBarController
---> TabItem1 - FirstUIViewController
---> TabItem2 - SecondUIViewController
---> TabItem3 - ThirdUIViewController
Нужно что-то вроде этого:
Когда приложение загружается, я нахожусь на TabItem1 - FirstUIViewController
. Когда я нажимаю на TabItem3
, я хочу, чтобы ThirdUIViewController
отображался в верхней части на FirstUIViewController
, а "FirstUIViewController" должен появиться в фоновом режиме без взаимодействия с пользователем.
Что я сделал до сих пор:
-
Так как
UIViewControllers
добавляются какRelationship Controllers
для отображения какTabBar Item
в `UITabBarController, я добавил segue из tabbarcontroller в ThridViewController. -
Изменен PresentationStyle для этого Segue в UIModalPresentationStyle.CurrentContext и сделал ниже модификацию
func `viewDidLoad()` { super.viewDidLoad() self.performSegue("identifier", sender: self) }
Ничего не происходит, и я просто вижу "ThridViewController" на белом фоне
-
Я пробовал подход к ручному кодированию:
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) }
Без изменений. Новый вид переопределяет вид сверху. если я добавлю это overlayController.view.backgroundColor = UIColor.clearColor()
, я вижу половину экрана черного и половины, содержащий мой новый вид
Проблемные точки:
- Где я должен писать код для инициализации/вызова ThirdViewController для отображения поверх текущего представления?
- Как устранить проблему с черным экраном и заставить ее работать на iOS 7?
Я использую Xcode 7 и работаю на iOS7. Пожалуйста помоги. Будет оценен фрагмент рабочего кода. Не отправляйте сообщения о переполнении стека в качестве ответа, если только код не работает, и вы сами пробовали.
UPDATE:. При таком подходе я получаю черный экран
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
}
}