【问题标题】:SWRevealViewController not passing parent in XCode 7SWRevealViewController 未在 XCode 7 中传递父级
【发布时间】:2015-12-14 15:02:56
【问题描述】:

在 SWRevealViewController github 页面上有一个类似的帖子,但进展并不快,所以我想我应该在这里为专家们提供这个。

我的应用程序中使用了 SWRevealViewController 2.4。几个月来一直运行良好(之前使用的是 2.3)。我注意到我们的 Beta 测试人员在他的 iPad 上安装了 iOS 9 Beta,但显示无法正常工作;但这不是一个高优先级,所以我们继续前进。

今天我更新到 XCode 7,仍在针对 iOS 8.4 进行测试。

在我的第一个前视图控制器中,一切似乎都运行良好。但是,一旦我转到下一个前视图控制器,我就会失去对 SWRevealViewController 的访问权限。

下一个视图控制器的“viewDidLoad”中的这一行

_revealViewController = self.revealViewController;
if ( _revealViewController )
{
    [_sidebarButton setTarget: _revealViewController];
    [_sidebarButton setAction: @selector( revealToggle: )];
}

不再有效,因为“self.revealViewController”始终为零。

我还尝试将全局引用传递给第一个revealviewcontroller,虽然它不是nil,但它也不起作用。侧边栏按钮不起作用,我正在调用“rightRevealToggleAnimated”,它也不再起作用。

同样,没有代码或 iOS 版本更改;刚刚更新到 XCode 7。

【问题讨论】:

    标签: ios slidingmenu slidingdrawer swrevealviewcontroller


    【解决方案1】:

    这就是我解决侧边栏问题的方法。

    1. 覆盖 func viewDidLoad() { super.viewDidLoad()

    self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())

    }

    1. @IBOutlet 弱变量打开:UIBarButtonItem!

    2. @IBAction func open(sender: UIBarButtonItem) {

      open.target = self.revealViewController()
      open.action = Selector("revealToggle:")
      

      }

    【讨论】:

    • 格式可能会更好。
    【解决方案2】:

    通过确保故事板上的所有 segue 都是 SWRevealViewControllerPushSegue 的,并且还在我的全局数据类中捕获对显示视图控制器的引用并在任何地方使用相同的引用,我能够可靠地完成这项工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-02
      • 2016-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-23
      相关资源
      最近更新 更多