Как представить modalViewController для всех VC в TabBarController

У меня есть UITabBarController с 5 вкладками. Я хочу иметь возможность отображать ViewController на всех вкладках, чуть выше панели вкладок. В настоящее время проблема, с которой я сталкиваюсь, заключается в том, что когда я модально представляю ViewController, он не виден. У меня эта функция вызывается всякий раз, когда я выбираю строку в tableView:

TableView, в котором вызывается showPlayerView, определяется следующим образом:

class SearchResultsTableView: UIView, UITableViewDataSource, UITableViewDelegate

Класс searchResultsTableView — это представление внутри другого класса, определенного следующим образом:

TestViewController: UIViewController, UserSearchDelegate, UISearchBarDelegate, UITableViewDelegate, UITableViewDataSource, UINavigationBarDelegate, UINavigationControllerDelegate

Вот реальная функция:

func showPlayerView() {
    let playerView = PlayerView()
    playerView.modalPresentationStyle = .overCurrentContext
    CustomTabBarController.sharedInstance?.present(playerView, animated: true, completion: {

    })
}

и я настроил SharedInstance CustomTabBarController следующим образом:

static var sharedInstance : CustomTabBarController?

а внутри viewDidLoad() у меня это:

CustomTabBarController.sharedInstance = self

Почему я не вижу свой модальный ViewController и как мне заставить его отображаться на всех экранах?


person Marshall Scudder    schedule 30.10.2017    source источник
comment
Не могли бы вы дать больше информации о том, где вы используете метод showPlayerView?   -  person MQLN    schedule 30.10.2017
comment
Просто отредактировал вопрос и добавил класс, в котором он выполняется.   -  person Marshall Scudder    schedule 30.10.2017
comment
использовать навигационный контроллер, может быть?   -  person koropok    schedule 30.10.2017
comment
Но мне нужно, чтобы он отображался во всех 5 VC в моем TabBarController. Сможет ли это сделать использование navBar?   -  person Marshall Scudder    schedule 30.10.2017
comment
показать еще код и описание для лучшего понимания, чтобы помочь вам.   -  person Yagnesh Dobariya    schedule 30.10.2017
comment
Есть ли что-то конкретное, что вы хотите, чтобы я показал? мне кажется, что все необходимое уже показано   -  person Marshall Scudder    schedule 31.10.2017


Ответы (1)


person    schedule
comment
Это не сработало. Прежде всего, я не могу вызвать self.present, потому что self ссылается на UIView. Когда я изменил self.present на CustomTabBarController.sharedInstance?.present, чтобы попытаться исправить это, я получил эту ошибку: Warning: Attempt to present <PlayerView: 0x7fa750911600> on <CustomTabBarController: 0x7fa74e81d600> whose view is not in the window hierarchy! - person Marshall Scudder; 30.10.2017
comment
Я обновил свой ответ. Попробуйте еще раз. Пусть это поможет вам. - person Yagnesh Dobariya; 30.10.2017
comment
присутствует из TestViewController, удалит предупреждение. вы можете установить обратный вызов TestViewController из вашего SearchResultsTableView - person jpulikkottil; 30.10.2017
comment
Но тогда он не будет отображаться на всех 5 viewControllers в UITabBar. - person Marshall Scudder; 30.10.2017