You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 16:54:01