swift 右侧的 SWRevealViewController
SWRevealViewController from the right side on swift
我正在使用 SWRevealViewController 库在 swift 中制作滑出菜单,但我很难将此菜单放在右侧。我在图书馆描述中看到了这条评论
// Optional right view controller, can be nil if not used
@property (nonatomic) UIViewController *rightViewController;
但我不熟悉 objective 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
你能试试这个代码吗:
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:")
我遵循了这个解决方案,在前视图的控制器中使用这个:
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
首先,这对我不起作用,但清洁有帮助。
Swift 3
将此代码添加到您的 ViewController
if revealViewController() != nil{
sideMenuBtn.target = revealViewController()
sideMenuBtn.action = #selector(SWRevealViewController.rightRevealToggle(_:))
view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
}
在 MainStoryBoard
将 segue 标识符值设置为 sw_right 而不是 sw_rear
- 为我工作
Swift 4.1
private func setRightMenu(){
btnMenuright.addTarget(revealViewController(), action: #selector(SWRevealViewController.rightRevealToggle(_:)), for: UIControlEvents.touchUpInside)
}
当您希望 sw_right 出现时,我尝试这样做。这段代码对我有用
对于右侧的菜单,
menuButton.action = #select或(SWRevealViewController.rightRevealToggle(_:))
对于正在寻找 RTL/LTR 语言本地化和支持的用户。
您需要做的就是,当您创建一个新的本地化文件时,select选项“Interface builder Storyboard”而不是“”可本地化的字符串”。它将为该语言创建另一个故事板,这样做是可以的,因为据我所知,您只会将它用于阿拉伯语。
现在在新故事板中将 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
*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())
}
}
}
在主故事板中添加类型 "custom" 从 SWRevealViewController 到你的 sideMenuViewController
然后 select segue 并在检查器中将其标识符设置为 sw_right
class 到 SWRevealViewControllerSegueSetController
就这些了。**
我正在使用 SWRevealViewController 库在 swift 中制作滑出菜单,但我很难将此菜单放在右侧。我在图书馆描述中看到了这条评论
// Optional right view controller, can be nil if not used
@property (nonatomic) UIViewController *rightViewController;
但我不熟悉 objective 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
你能试试这个代码吗:
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:")
我遵循了这个解决方案,在前视图的控制器中使用这个:
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
首先,这对我不起作用,但清洁有帮助。
Swift 3
将此代码添加到您的 ViewController
if revealViewController() != nil{
sideMenuBtn.target = revealViewController()
sideMenuBtn.action = #selector(SWRevealViewController.rightRevealToggle(_:))
view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
}
在 MainStoryBoard
将 segue 标识符值设置为 sw_right 而不是 sw_rear
- 为我工作
Swift 4.1
private func setRightMenu(){
btnMenuright.addTarget(revealViewController(), action: #selector(SWRevealViewController.rightRevealToggle(_:)), for: UIControlEvents.touchUpInside)
}
当您希望 sw_right 出现时,我尝试这样做。这段代码对我有用
对于右侧的菜单,
menuButton.action = #select或(SWRevealViewController.rightRevealToggle(_:))
对于正在寻找 RTL/LTR 语言本地化和支持的用户。
您需要做的就是,当您创建一个新的本地化文件时,select选项“Interface builder Storyboard”而不是“”可本地化的字符串”。它将为该语言创建另一个故事板,这样做是可以的,因为据我所知,您只会将它用于阿拉伯语。
现在在新故事板中将 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
*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())
}
}
}
在主故事板中添加类型 "custom" 从 SWRevealViewController 到你的 sideMenuViewController
然后 select segue 并在检查器中将其标识符设置为 sw_right
class 到 SWRevealViewControllerSegueSetController
就这些了。**