【问题标题】:iOS - TableViewController e SWRevealViewController for menuiOS - TableViewController e SWRevealViewController 用于菜单
【发布时间】:2017-11-30 10:55:27
【问题描述】:

在我的 tableview 中,我在 Navigation Controller 中插入了一个 barbutton 项目,如照片所示,在压力下必须打开一个侧面菜单

问题是我没有打开任何菜单! 我关注这个视频:https://www.youtube.com/watch?v=wXCHDP9V3aM&t=188s

tableview 似乎无法识别按钮压力.. 我该怎么办?

【问题讨论】:

  • 你能分享你的代码吗?
  • 显示您的按钮操作代码
  • @ShabbirAhmad 是的,等一下
  • 添加一些代码@user2324946
  • @ShabbirAhmad imgur.com/Yryg2nB

标签: ios xcode uitableview swrevealviewcontroller


【解决方案1】:

revealViewController 为 nil 的最方便的原因是您没有在 stroyboard 中正确连接 segue。

如果 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)

更新:

  1. 您需要将 loginViewController 和 TabViewController 分开,如下图所示。(两者之间没有 segue)

  1. 添加 SWRevealViewController 和菜单屏幕表格视图。
  2. 接下来,从 SWRevealViewController 控制并拖动到菜单视图控制器。释放按钮后,您将看到一个用于 segue 选择的上下文菜单。在这种情况下,选择“reveal view controller set segue”。这定义了一个自定义的 segue “SWRevealViewControllerSetSegue”。选择 segue 并将其标识符更改为身份检查器下的“sw_rear”。通过设置标识符,您告诉 SWRevealViewController 菜单视图控制器是后视图控制器。在这种情况下,侧边栏菜单将隐藏在内容视图控制器后面。
  3. 接下来,重复相同的过程,将 SWRevealViewController 与新闻视图控制器的导航控制器连接起来。再次,在出现提示时选择“显示视图控制器设置序列”。将 segue 的标识符设置为“sw_front”。这告诉 SWRevealViewController 导航控制器是前视图控制器。
  4. 与主视图控制器的 tableview 控制器相同,只需选择 segue 作为显示视图控制器推送。
  5. 在所有选项卡中添加此代码。

    if (self.revealViewController() != nil) {
    menuButton.target = self.revealViewController()
    menuButton.action =  #selector(SWRevealViewController.revealToggle(_:))
    self.view.addGestureRecognizer(revealViewController().panGestureRecognizer())
    }
    
  6. 登录后跳转到 TabViewController 使用此代码。

    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let main = storyboard.instantiateViewController(withIdentifier: "SWRevealViewController") //SWRevealViewController
    self.present(main, animated: true, completion: nil)
    
  7. 登录后:要跳过登录视图,请在 AppDelegate 中添加此检查: 应用代理:

    if (userDefaults.object(forKey:"user") != nil) {
    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    self.window?.rootViewController = storyboard.instantiateViewController(withIdentifier: "SWRevealViewController")
    self.window?.makeKeyAndVisible()
    }
    

【讨论】:

  • 我不明白该做什么和改变什么:(
  • @Taprolano 你如何展示 TabView ?
  • @Taprolano 你做错了兄弟。 1. 登录屏幕然后 TabView 2. 您需要创建 RevealViewController 和菜单屏幕,如 youtube 视频所示。
  • @Taprolano 分享视频链接很好。你只需要按照每一步或检查我的更新部分。它将帮助您实现目标。
猜你喜欢
  • 2016-01-27
  • 2013-11-19
  • 2014-07-18
  • 2017-05-05
  • 2014-05-11
  • 2014-12-20
  • 2016-03-18
  • 2015-11-24
  • 2017-04-08
相关资源
最近更新 更多