【发布时间】:2018-11-28 19:27:30
【问题描述】:
我会尽力解释我的问题,所以提前谢谢。
我通常通过让每个 ViewController 代表不同的视图来构建具有多个视图控制器的应用程序。现在,我正在创建一个具有许多不同视图的大型应用程序。我不想在我的应用程序中有 15 个以上的 ViewController。我宁愿让一个 ViewController 继承不同的 UIView。
例如,如果我在菜单栏上选择“个人资料”选项。然后我会被带到 selectionController 并让 selectionController 继承名为 Settings View 的 UIView
由于某种原因,在调用该函数以显示 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实际上在导航控制器中。 -
当我添加断点时,Home 控制器确实出现了 nil。初始化家庭控制器的步骤是什么?
标签: ios swift uiview uinavigationcontroller viewcontroller