2017-12-22 4 views
1

SWRevealControllerをプログラムで呼び出すときに、私のViewControllerでSWRevealController Delegateを呼び出していますが、viewDidLoad()に以下を追加すると、barButtonItemは機能せず、addGestureRecognizer(self.revealViewController().panGestureRecognizer())にヒットしたときにアプリケーションがクラッシュします。以下はviewDidLoadのコードです:SWRevealControllerプログラムで

navigationItem.leftBarButtonItem = UIBarButtonItem(image: #imageLiteral(resourceName: "menu2-black-32").withRenderingMode(.alwaysOriginal), style: .plain, target: self.revealViewController(), action: #selector(SWRevealViewController.revealToggle(_:))) 
     self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer()) 

私はこのコードは私のviewcontrollers、他のいずれもの一つの作品として、この問題を引き起こしていただきましたことを確認していません。

ありがとうございました!

EDIT:

if self.revealViewController() != nil { 
     navigationItem.leftBarButtonItem = UIBarButtonItem(image: 
     #imageLiteral(resourceName: "menu2-black- 
     32").withRenderingMode(.alwaysOriginal), style: .plain, target: 
     self.revealViewController(), action: 
     #selector(SWRevealViewController.revealToggle(_:))) self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer()) 
     } 

しかし、私は、なぜそのnilを確認していない...:

)が(私のself.revealViewControllerのように見える私はこのように見えるようにコードを編集したときはnilでありますあなたがこれを追加することができます。..

+0

をカスタマイズすることができます 'revealViewControllerは()'は何ですか?コードを投稿するかもしれませんか? –

答えて

0

は、まず、あなたはのviewDidLoadでバーボタン

@IBOutlet weak var menuButton: UIBarButtonItem! 

を作成する必要があります1

if self.revealViewController() != nil 
     { 
      menuButton.target = self.revealViewController() 
      menuButton.action = #selector(SWRevealViewController.revealToggle(_:)) 
      self.view.addGestureRecognizer(self.revealViewController().tapGestureRecognizer()) 
      self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer()) 
     } 

これは正常に動作しますが、また、メニューボタン(UIBarButtonItem)

+0

しかし、私の 'self.revealController'がnilなので、コードは決して実行されません。 – a2b123

+0

revealcontrollerクラス.h&.mクラスを追加しましたか? –