2017-04-02 12 views
0

創建一個滑動條菜單我想在我的應用程序創建一個滑動條菜單 enter image description here試圖在IOS

當我點擊漢堡包圖標,它應該顯示一個菜單(如下圖所示),如下圖所示。 enter image description here

我目前使用SWRevealController,一個寫在Objective C中的庫。我創建了一個橋接頭並導入了類。這是我目前的設置將跳轉到一個菜單控制器或UIViewTable是SWRevealController enter image description here

我最初的看法,和塞格斯是SWRevealViewControllerSegueSetController的子類。在我的食品項目視圖控制器(漢堡包導航存在的控制器)中,我添加了以下代碼來激活滑塊操作。

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()) 
     } 

} 

但是,當我點擊按鈕時,它仍然沒有響應。當我用我的其他應用程序做到這一點時,它運行良好。我不知道它爲什麼不在這裏

工作這是我作爲參考來源:http://www.appcoda.com/sidebar-menu-swift/

視圖控制器完整的代碼

@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. 
    } 

謝謝你的StackOverflow。

+0

一個問題菜單按鈕被引用爲IBOutlet中左欄按鈕項權\ – Vinodh

+0

是這是正確的 –

+1

你能連接視圖控制器 –

回答

0

問題在你的代碼,你不設置SWRevealController可用的代碼根view.No故事板的選擇明智的,我們不得不再次做配置。這個庫就是這樣設計的。所以如果你改變下面的代碼,它會像魅力一樣工作。

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     } 

       }); 
      } 
+0

所以我所做的更改的建議,但仍然沒有工作:( –

+0

會改變,把你的代碼等待 – Vinodh

+0

我已經改變了代碼剛纔請立即 – Vinodh

0

我也是這個工作今天,是可使用SWRevealController的最佳選擇,是不是有一個蘋果建成這樣的方式?我渴望看到選項,而不是從Github獲得某些東西,除非這是我的最後手段。

+0

mhmm我不確定,但我非常喜歡SWRevealController,它非常簡單。我以前在另一個應用程序中使用它,它運行良好,但不知道爲什麼它不在這裏工作 –

+0

SWREVEALCONTROLLER是最好的選擇,我在SWIFT3工作。 – Fahd

+0

我還沒有嘗試任何其他,但SWREVEALCONTROLLER是使用的一個更容易的,根據經驗 –