Swift 4:点击按钮后无法按下ViewController。

时间:2018-06-19 18:43:57

标签: ios swift uiview uinavigationcontroller viewcontroller

我将尽力解释我的问题,所以在此先感谢。

我通常通过让每个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")
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您是否已确保导航控制器已初始化?您是使用情节提要还是以编程方式设置家庭控制器?

如果在相关行上放置断点,则应该为您提供有关是否已初始化的更多信息。