上一篇中我们快速验证了原型的功能可以实现,接下来就是稍微放慢前进的步伐,来收拾一下之前快速开发时写的稍显蹩脚难看的代码了.
为了让大家还有印象,我把最后修改的方法完整显示如下:
override func tableView(_ tableView:UITableView, didSelectRowAt indexPath:IndexPath) { tableView.deselectRow(at: indexPath, animated:true) centerViewController.menuItem = MenuItem.sharedItems[(indexPath as NSIndexPath).row] let containerVC = parent as! ContainerViewController if indexPath.row == 1{ containerVC.addKsVC.view.frame = containerVC.centerViewController.view.frame containerVC.centerViewController.view.isHidden = true containerVC.centerViewController = containerVC.addKsVC containerVC.addKsVC.view.isHidden = false }else{ containerVC.centerViewController.view.isHidden = true containerVC.centerViewController = containerVC.orgCenterVC containerVC.orgCenterVC.view.isHidden = false } containerVC.toggleSideMenu() }
如君所见,在方法中用一个if语句看起来并不是神马好主意.为了从根本上解决我们还得回到ContainerVC里去!
打开ContainerViewController.swift注释掉之前和addKsVC相关的所有代码,现在我们需要完成所有菜单项对应VC的处理,所以有必要写一个初始化方法,将所有内容VC的初始化放在其中,当然目前只有addKsVC一个控制器需要初始化,其他所有的仍使用同一个VC:
func initContentVCs(){ let storyboard = UIStoryboard(name: "Main", bundle: nil) let addKsVC = storyboard.instantiateViewController(withIdentifier: "AddKsVC") addChildViewController(addKsVC) view.addSubview(addKsVC.view) addKsVC.view.isHidden = true addKsVC.didMove(toParentViewController: self) if orgCenterVC != nil{ contentVCs = [UIViewController]() let count = MenuItem.sharedItems.count for _ in 0..关注打赏