我正在使用SWRevealViewController库在swift中制作一个滑出菜单,但我很难将这个菜单放在右侧。我在图书馆的描述上看到了这个注释
// Optional right view controller, can be nil if not used
@property (nonatomic) UIViewController *rightViewController;
但我对目标C不熟悉,我无法在SWIFT上做到这一点。这是我的默认(左)菜单代码的一部分:
class ViewController: UIViewController, AVAudioPlayerDelegate {
@IBOutlet weak var playlistOutlet: UIBarButtonItem!
override func viewDidLoad() {
super.viewDidLoad()
playlistOutlet.target = self.revealViewController()
playlistOutlet.action = Selector("revealToggle:")
self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
}
}
并且从SWRevealViewController库调用revealViewController
我遵循了这个解决方案,在控制器的前侧边视图中使用了这个:
override func viewDidLoad() {
super.viewDidLoad()
if self.revealViewController() != nil {
favoritesButton.target = self.revealViewController()
favoritesButton.action = "rightRevealToggle:"
self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
}
}
别忘了先创建到项目栏按钮的出口。在情节提要中,将segue值设置为sw_right
一开始这对我不起作用,但一个清洁工帮了我的忙。
雨燕3
if revealViewController() != nil{
sideMenuBtn.target = revealViewController()
sideMenuBtn.action = #selector(SWRevealViewController.rightRevealToggle(_:))
view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
}
将segue标识符值设置为sw_right而不是sw_rear
更好的选择:https://github.com/jonkykong/sidemenu
您能试试这段代码吗:
var storyboard = UIStoryboard(name: "Main", bundle: nil)
var sidemenuViewController = storyboard.instantiateViewControllerWithIdentifier("sideMenu") as! SideMenuViewController
sidemenuViewController.delegate = self
revealViewController().rightViewController = sidemenuViewController
revealViewController().delegate = self
sideMenuItem.target = self.revealViewController()
self.revealViewController().rightViewRevealWidth = self.view.frame.width * 0.8
sideMenuItem.action = Selector("rightRevealToggle:")