2017-10-30 9 views
0

私はUIBarButtonItemを持っています。他のクラスでpushViewControllerを使用したいと思います。これは私のGoToPagesクラスですUIBarButtonItem - >インスタンスに送信されたセレクタが認識されない(Swift 4)

self.navigationItem.rightBarButtonItem = UIBarButtonItem(image: UIImage(named:"settings"), style: .plain, target: self, action: #selector(GoToPages.goToSettings(_:))) 

:だから私は、のviewDidLoadでのコード行を持って

import UIKit 

class GoToPages: UIViewController { 

    @objc func goToSettings(_ sender:UIBarButtonItem) { 

     let button = sender 

     switch button.tag { 
     case 0: 
      let settingsPageView = self.storyboard?.instantiateViewController(withIdentifier: "Notifications") 
      self.navigationController?.pushViewController(settingsPageView!, animated: true) 
     case 1: 
      let settingsPageView = self.storyboard?.instantiateViewController(withIdentifier: "Settings") 
      self.navigationController?.pushViewController(settingsPageView!, animated: true) 
     default: 
      return 
     } 
    } 
} 

しかし、私はエラーを取得:認識されていないセレクタはインスタンスに送信しました。

+0

コードの最初の行はである何級?言い換えれば、ボタン項目を作成するとき、正確には「自己」とは何ですか? – rmaddy

答えて

1

パラメータtargetの値がactionのに実装されたクラスのインスタンスなければならない。

selfactionは現在のクラスで実装されていることを意味します。

+0

正しいコードは何でしょうか?私は目標を試みました:GoToPages.selfしかし、それは動作していません... – Flincorp

+0

私は書きました:* ...クラスの*インスタンス**でなければなりません。 'GoToPages'の実際のインスタンスへの参照が必要です。 – vadian

+0

私は試しました:self.navigationItem.rightBarButtonItem = UIBarButtonItem(イメージ:UIImage(名前: "settings")、スタイル:.plain、target:GoToPages()、action:#selector(GoToPages.goToSettings(_ :)) エラーは表示されませんが、[バー]ボタンの項目をクリックすると追加に気付きません。 – Flincorp

0

マイコード:

輸入のUIKit

拡張子のUIViewController {

@objc func goToPage(_ sender: Any) { 

    guard let button = sender as? UIBarButtonItem else { 
     return 
    } 

    switch button.tag { 
    case 0: 
     let settingsPageView = self.storyboard?.instantiateViewController(withIdentifier: "Notifications") 
     self.navigationController?.pushViewController(settingsPageView!, animated: true) 
    case 1: 
     let settingsPageView = self.storyboard?.instantiateViewController(withIdentifier: "Settings") 
     self.navigationController?.pushViewController(settingsPageView!, animated: true) 
    default: 
     return 
    } 
} 
関連する問題