Я сделаю все возможное, чтобы объяснить свою проблему, поэтому заранее спасибо.
Я обычно создаю приложения с множеством контроллеров представления, каждый из которых представляет отдельный вид. Прямо сейчас я создаю большое приложение с множеством разных представлений. Я не хочу, чтобы в моем приложении было 15+ ViewController. Я бы предпочел, чтобы один ViewController унаследовал разные UIView.
Например, если в строке меню я выбираю опцию «Профиль». Затем я перейду к selectionController, и selectionController унаследует UIView с именем Settings View.
По какой-то причине при вызове функции для отображения profileView ничего не происходит. Я реализовал подобную функцию раньше, но она не работает.
HomeController
//This function is called upon menu tap
func displayController(menuOption: MenuOption, view: UIView) {
let selectionController = UIViewController()
selectionController.view.frame = UIScreen.main.bounds
selectionController.navigationItem.title = menuOption.name
selectionController.view.backgroundColor = Color.defaultBackgrondColor
selectionController.view.addSubview(view)
navigationController?.navigationBar.tintColor = UIColor.white
navigationController?.pushViewController(selectionController, animated: true)
}
Строка меню
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
//CARRY OUT ANIMATION FOR MENU BAR...
}) { (completed: Bool) in
let option = self.menuOptions[indexPath.row]
switch option.name {
case "Profile":
//This is where I call my function to display the new view
self.homeController?.displayController(menuOption: option, view: ProfileView(frame: UIScreen.main.bounds))
default:
print("Staying on home page")
}
}
}
self.homeController
не равен нулю. Если проблема не в этом, убедитесь, чтоhomeController
действительно находится в контроллере навигации. - person rmaddy   schedule 19.06.2018