iOS - 菜单的 TableViewController 和 SWRevealViewController
iOS - TableViewController e SWRevealViewController for menu
在我的 tableview 中,我在 Navigation Controller 中插入了一个 barbutton 项目,如图所示,在压力下必须打开一个侧面菜单
问题是我没有打开任何菜单!
我关注了这个视频:https://www.youtube.com/watch?v=wXCHDP9V3aM&t=188s
看起来 tableview 无法识别压力按钮..我该怎么办?
revealViewController 为 nil 的最常见原因是您没有在 stroyboard 中正确连接 segues。
如果 TabViewController 不是您的故事板入口点,则在 AppDelegate 中添加此代码。
应用委托:
if (userDefaults.object(forKey:"user") != nil) {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
self.window?.rootViewController = storyboard.instantiateViewController(withIdentifier: "SWRevealViewController")
self.window?.makeKeyAndVisible()
}
或者如果您要为其他 viewController 呈现 TabViewController,则使用此代码呈现 TabViewController。
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let main = storyboard.instantiateViewController(withIdentifier: "SWRevealViewController") //SWRevealViewController
self.present(main, animated: true, completion: nil)
更新:
- 您需要将loginViewController和TabViewController分开,如下图所示。(两者之间没有segue)
- 添加 SWRevealViewController 和菜单屏幕表视图。
- 接下来,按住 Control 从 SWRevealViewController 拖动到菜单视图控制器。释放按钮后,您将看到 segue selection 的上下文菜单。在这种情况下,select“显示视图控制器设置 segue”。这定义了一个自定义的 segue “SWRevealViewControllerSetSegue”。 Select segue 并在身份检查器下将其标识符更改为“sw_rear”。通过设置标识符,您告诉 SWRevealViewController 菜单视图控制器是后视图控制器。在这种情况下,侧边栏菜单将隐藏在内容视图控制器后面。
- 接下来,重复相同的步骤将 SWRevealViewController 与新闻视图控制器的导航控制器连接起来。同样,select 出现提示时“reveal view controller set segue”。将 segue 的标识符设置为“sw_front”。这告诉 SWRevealViewController 导航控制器是前视图控制器。
- 与主视图控制器的表视图控制器相同,只是 select segue as reveal view controller push。
在所有选项卡中添加此代码。
if (self.revealViewController() != nil) {
menuButton.target = self.revealViewController()
menuButton.action = #selector(SWRevealViewController.revealToggle(_:))
self.view.addGestureRecognizer(revealViewController().panGestureRecognizer())
}
登录后跳转到TabViewController使用此代码。
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let main = storyboard.instantiateViewController(withIdentifier: "SWRevealViewController") //SWRevealViewController
self.present(main, animated: true, completion: nil)
登录后:要跳过登录视图,请在 AppDelegate 中添加此检查:
应用委托:
if (userDefaults.object(forKey:"user") != nil) {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
self.window?.rootViewController = storyboard.instantiateViewController(withIdentifier: "SWRevealViewController")
self.window?.makeKeyAndVisible()
}
在我的 tableview 中,我在 Navigation Controller 中插入了一个 barbutton 项目,如图所示,在压力下必须打开一个侧面菜单
问题是我没有打开任何菜单! 我关注了这个视频:https://www.youtube.com/watch?v=wXCHDP9V3aM&t=188s
看起来 tableview 无法识别压力按钮..我该怎么办?
revealViewController 为 nil 的最常见原因是您没有在 stroyboard 中正确连接 segues。
如果 TabViewController 不是您的故事板入口点,则在 AppDelegate 中添加此代码。 应用委托:
if (userDefaults.object(forKey:"user") != nil) {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
self.window?.rootViewController = storyboard.instantiateViewController(withIdentifier: "SWRevealViewController")
self.window?.makeKeyAndVisible()
}
或者如果您要为其他 viewController 呈现 TabViewController,则使用此代码呈现 TabViewController。
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let main = storyboard.instantiateViewController(withIdentifier: "SWRevealViewController") //SWRevealViewController
self.present(main, animated: true, completion: nil)
更新:
- 您需要将loginViewController和TabViewController分开,如下图所示。(两者之间没有segue)
- 添加 SWRevealViewController 和菜单屏幕表视图。
- 接下来,按住 Control 从 SWRevealViewController 拖动到菜单视图控制器。释放按钮后,您将看到 segue selection 的上下文菜单。在这种情况下,select“显示视图控制器设置 segue”。这定义了一个自定义的 segue “SWRevealViewControllerSetSegue”。 Select segue 并在身份检查器下将其标识符更改为“sw_rear”。通过设置标识符,您告诉 SWRevealViewController 菜单视图控制器是后视图控制器。在这种情况下,侧边栏菜单将隐藏在内容视图控制器后面。
- 接下来,重复相同的步骤将 SWRevealViewController 与新闻视图控制器的导航控制器连接起来。同样,select 出现提示时“reveal view controller set segue”。将 segue 的标识符设置为“sw_front”。这告诉 SWRevealViewController 导航控制器是前视图控制器。
- 与主视图控制器的表视图控制器相同,只是 select segue as reveal view controller push。
在所有选项卡中添加此代码。
if (self.revealViewController() != nil) { menuButton.target = self.revealViewController() menuButton.action = #selector(SWRevealViewController.revealToggle(_:)) self.view.addGestureRecognizer(revealViewController().panGestureRecognizer()) }
登录后跳转到TabViewController使用此代码。
let storyboard = UIStoryboard(name: "Main", bundle: nil) let main = storyboard.instantiateViewController(withIdentifier: "SWRevealViewController") //SWRevealViewController self.present(main, animated: true, completion: nil)
登录后:要跳过登录视图,请在 AppDelegate 中添加此检查: 应用委托:
if (userDefaults.object(forKey:"user") != nil) { let storyboard = UIStoryboard(name: "Main", bundle: nil) self.window?.rootViewController = storyboard.instantiateViewController(withIdentifier: "SWRevealViewController") self.window?.makeKeyAndVisible() }