正在尝试在IOS中创建幻灯片菜单

正在尝试在IOS中创建幻灯片菜单,ios,user-interface,swrevealviewcontroller,Ios,User Interface,Swrevealviewcontroller,我想在我的应用程序中创建一个幻灯片菜单(如下图所示) 当我点击汉堡包图标时,它会显示一个菜单,如下所示。 我目前正在使用SWRevealController,这是一个用Objective C编写的库。我创建了一个桥接头并导入了该类。这是我目前的设置 我的初始视图分支到菜单控制器或UIViewTable,它是一个SWRevealController,这些segues是SWRevealViewController的子类SegueSetController。在我的食物项目视图控制器(汉堡包导航存

我想在我的应用程序中创建一个幻灯片菜单(如下图所示)

当我点击汉堡包图标时,它会显示一个菜单,如下所示。

我目前正在使用SWRevealController,这是一个用Objective C编写的库。我创建了一个桥接头并导入了该类。这是我目前的设置

我的初始视图分支到菜单控制器或UIViewTable,它是一个SWRevealController,这些segues是SWRevealViewController的子类SegueSetController。在我的食物项目视图控制器(汉堡包导航存在的控制器)中,我添加了以下代码来激活滑块操作

override func viewDidLoad() {
        super.viewDidLoad()

        //Creating the slidebar Navigation using SWRevealViewController 
        if self.revealViewController() != nil {
            menuButton.target = self.revealViewController()
            menuButton.action = #selector(SWRevealViewController.revealToggle(_:))
            self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
        }

}
但是,当我单击按钮时,它仍然没有响应。当我在其他应用程序中执行此操作时,它运行良好。我不知道为什么它在这里不起作用

这是我用作参考的来源:

视图控制器完整代码

@IBOutlet weak var thumbnail_image: UIImageView!
    //@IBOutlet weak var food_detail: UITextView!
    @IBOutlet weak var testing: UILabel!

    @IBOutlet weak var menuButton: UIBarButtonItem!
    var jsonResponseFood: NSArray = NSArray() //API for types of food available
    var jsonResponseRecipe: NSArray = NSArray() // API for recipes in food
    var selectedFood: foodItem?
    var postStr: String?

    //Initializing API
    let FullRecipeAPIModel = fullRecipeAPIModel()

    override func viewDidLoad() {
        super.viewDidLoad()

        //Creating the slidebar Navigation using SWRevealViewController 
        if self.revealViewController() != nil {
            menuButton.target = self.revealViewController()
            menuButton.action = #selector(SWRevealViewController.revealToggle(_:))
            self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
        }


        print(selectedFood?.name as String!)
        //testing.text = self.selectedFood?.name

        let APIModel = apiModel()

        APIModel.delegate = self
        FullRecipeAPIModel.delegate = self
        APIModel.downloadItems(postString: postStr!)

        // Do any additional setup after loading the view.
    }

谢谢你

代码中的问题是您没有将SWRevealController设置为根视图。代码方面没有可用的脚本选项,我们必须再次进行配置。这个图书馆就是这样设计的。所以,如果你改变代码如下,它会像一个魅力

if(stat == "login"){
                if(responseString == "invalid"){
                    self.isValid = false;
                    print(self.isValid)
                }

                DispatchQueue.main.async(execute: {
                    if self.checkLogin(data: responseString!) == true {
                        let storyboard = UIStoryboard(name: "food", bundle: nil)
                        let controller = storyboard.instantiateViewController(withIdentifier: "foodItemViewController") as! foodItemViewController
                        let navController = UINavigationController(rootViewController: controller) // Creating a navigation controller with VC1 at the root of the navigation stack.
                        let appDelegate = UIApplication.shared.delegate as! AppDelegate
                        let menuView :MenuController = storyboard.instantiateViewController(withIdentifier: "menuBar") as! MenuController
                        let revealController = SWRevealViewController()

                        revealController.frontViewController = navController;
                        revealController.rearViewController = menuView;

                        appDelegate.window?.rootViewController = revealController

                    }
                    else{
                        //Show alert here
                        self.showAlert(title: "User Does Not Exist", alertTitle: "Close", message: "");
                    }
                });
            }
            else{
                //CODE COULD BE SIMPLIFIED
                DispatchQueue.main.async(execute: {
                    if(responseString == "duplicate"){
                        //Show alert here
                        self.showAlert(title: "User with this email already exist", alertTitle: "Close", message: "Please register with another email address")
                    }
                    else{
                        //Show Food UITable
                        let storyboard = UIStoryboard(name: "food", bundle: nil)
                        let controller = storyboard.instantiateViewController(withIdentifier: "entranceFoodController") 
                        /*let navController = UINavigationController(rootViewController: controller) // Creating a navigation controller with VC1 at the root of the navigation stack.*/
                        let appDelegate = UIApplication.shared.delegate as! AppDelegate

                        let menuView :MenuController = storyboard.instantiateViewController(withIdentifier: "menuBar") as! MenuController
                        let revealController = SWRevealViewController()

                        revealController.frontViewController = controller;
                        revealController.rearViewController = menuView;

                        appDelegate.window?.rootViewController = revealController                    }

                });
            }

我今天也在做这件事,这是使用SWRevealController的最佳选择吗?难道没有苹果内置的方法吗?。我渴望看到选项,而不是从Github获得一些东西,除非这是我的最后手段。

一个问题菜单按钮作为IBOutlet被引用到左栏按钮项右侧?\n是的,这是正确的,您可以附加您的项目共享视图控制器的完整代码您的连接错误,因此我按照建议进行了更改,它仍然不起作用:(嗨,Vinodh,我在为我的另一个视图添加幻灯片菜单时遇到了问题,我能问你另一个问题吗?很抱歉回答得太晚。这是我的问题,我已经根据我的新问题更新了我的github代码。嗯,我不确定,但我非常喜欢SWRevealController,它非常简单。我以前在另一个应用程序中使用过它,a它工作得很好,但不知道为什么不工作这里是SWREVEALCONTROLLER的最佳选择,我在SWIFT3工作。我没有尝试过任何其他,但SWREVEALCONTROLLER是其中一个更容易使用的,根据经验