【发布时间】:2014-09-02 10:06:00
【问题描述】:
我正在使用“插件”SWRevealViewController 来帮助在我的应用中生成侧边栏。现在在 Objective-C 中,您可以使用以下代码控制侧栏:
[self.sidebarButton setTarget: self.revealViewController];
[self.sidebarButton setAction: @selector( revealToggle: )];
[self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];
sidebarButton 已连接 UIBarButtonItem 和 IBOutlet。现在我正试图将它应用到我的 Swift 代码中,但我取得了好坏参半。
我设置了一个@IBOutlet var 按钮。现在我已经尝试了 UIBarButtonItem 和 UIButton。当我尝试 UIBarButtonItem 时,我使用了以下行:
button = UIBarButtonItem(barButtonSystemItem: .Add, target: self.revealViewController(), action: "revealToggle:")
但是,这什么也没做,按钮也不起作用。但是,如果我将按钮设置为 UIButton 并将其与以下内容挂钩:
button.addTarget(self.revealViewController(), action:"revealToggle:", forControlEvents:UIControlEvents.TouchUpInside)
这适用于滑出和滑入栏,但不能通过手势。问题是我无法将 UIButton 添加到工具栏(无论如何在 StoryBoard 中)。
那么有什么方法可以正确实现吗? 另外,是否也可以添加手势识别器?
谢谢
编辑
好的,我已经设法让手势切换工作了,虽然我认为我的方法有点啰嗦:
var swipeRight = UISwipeGestureRecognizer(target: self.revealViewController(), action: "revealToggle:")
swipeRight.direction = UISwipeGestureRecognizerDirection.Right
self.view.addGestureRecognizer(swipeRight)
var swipeLeft = UISwipeGestureRecognizer(target: self.revealViewController(), action: "revealToggle:")
swipeLeft.direction = UISwipeGestureRecognizerDirection.Left
self.view.addGestureRecognizer(swipeLeft)
所以请指正。
【问题讨论】:
-
你好。我对手势也有同样的问题。我已经尝试过您的解决方案,但看起来不太好。你有没有找到另一种方法来做到这一点?谢谢。
-
我找到了一个更好的附加手势解决方案。把它放到你前面的 ViewController 中。 self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer());
-
您可以添加您的 swift 代码作为答案吗?
-
你是如何快速从显示视图控制器转移到前视图控制器的?我在我的 swift 项目中添加了 SWrevealViewController 类,但是从后到前移动时出现问题。在 tableview didselect 方法中?
标签: ios objective-c swift swrevealviewcontroller