Swift5下用Xib(非Storyboard)实现SideMenu点击TableView行push全屏ViewController
问题解决方法
问题原因
你的SideMenuController本身属于侧边栏专属的导航控制器sidemnuNavigationController,这个控制器是作为LGSideMenuController的左侧视图存在的,宽度被固定为UIScreen.main.bounds.width - 100,所以你在SideMenuController中调用self.navigationController拿到的是这个侧边栏导航控制器,push出来的页面自然只能在侧边栏的宽度范围内显示,无法全屏。
修复方案
你需要拿到LGSideMenuController承载主内容的全屏导航控制器,用这个控制器执行push操作,即可推出全屏且自带返回按钮的页面,修改你的行点击代码如下:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { if indexPath.row == 0{ let viewController = EditProfileViewController(nibName: "EditProfileViewController", bundle: nil) // 获取主内容区的全屏导航控制器进行push guard let mainNavigationController = sideMenuController?.rootViewController as? UINavigationController else { return } mainNavigationController.pushViewController(viewController, animated: true) sideMenuController?.hideLeftView() print("row tapped") } }
修改后push出来的EditProfileViewController会在主内容区全屏显示,导航栏自带返回按钮,点击即可回到之前的主页面。
内容的提问来源于stack exchange,提问作者Sipa
相关产品推荐
相关产品推荐

