我正在使用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
答案 0 :(得分:6)
Swift 3
if revealViewController() != nil{
sideMenuBtn.target = revealViewController()
sideMenuBtn.action = #selector(SWRevealViewController.rightRevealToggle(_:))
view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
}
在MainStoryBoard 将segue标识符值设置为 sw_right ,而不是 sw_rear
答案 1 :(得分:5)
你可以尝试这段代码:
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:")
答案 2 :(得分:1)
Swift 4.1
private func setRightMenu(){
btnMenuright.addTarget(revealViewController(), action: #selector(SWRevealViewController.rightRevealToggle(_:)), for: UIControlEvents.touchUpInside)
}
当你想要sw_right显示时,我尝试这样做。这段代码对我有用
答案 3 :(得分:0)
对于右侧菜单,
menuButton.action = #selector(SWRevealViewController.rightRevealToggle(_:))
面向正在寻求本地化和RTL / LTR语言支持的人。
您需要做的就是,在创建新的本地化文件时,选择选项“ 界面构建器情节提要”而不是“ 可本地化的字符串”。它将为该语言创建另一个分镜脚本,据我所知可以这样做,因为您只能将其用于阿拉伯语。
现在,在新的故事板上,将segue重命名为“ sw_right ”,而在旧的故事板上,将其命名为“ sw_rear ”。
在菜单按钮的 viewDidLoad()中,只需检查当前的语言环境语言即可
let language = NSLocale.preferredLanguages[0]
,然后根据您的选择从任一侧打开菜单。
这是我的代码:
if self.revealViewController() != nil {
menuButton.target = self.revealViewController()
let language = NSLocale.preferredLanguages[0]
if language == "ar-AE" || language == "ar-US" || (language.range(of: "ar-") != nil) {
menuButton.action = #selector(SWRevealViewController.rightRevealToggle(_:))
}
else {
menuButton.action = #selector(SWRevealViewController.revealToggle(_:))
}
self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
}
您还可以使用区域代码,因为我注意到用户可以单独更改语言或区域。
let region = NSLocale.current.regionCode
答案 4 :(得分:0)
*override func viewDidLoad() {
super.viewDidLoad()
.
.
.
menuButton.addTarget(revealViewController(), action: #selector(SWRevealViewController.rightRevealToggle(_:)), for: .touchUpInside)
if revealViewController() != nil {
revealViewController().rightViewRevealWidth = 200 //any number
view.addGestureRecognizer(self.revealViewController().panGestureRecognizer()
view.addGestureRecognizer(self.revealViewController().tapGestureRecognizer())
}
}
}
在主故事板上的从SWRevealViewController向您的sideMenuViewController添加类型为“ custom”的segue
然后选择segue,然后在检查器中将其标识符设置为sw_right
并分类为SWRevealViewControllerSegueSetController
就是这样。**