2016-07-28 9 views
2

私はテーブルビューとカスタムセルをswiftを使用しています。以下の完全なコードです:xibファイルを使用したカスタムテーブルビューのセルは、クリック/選択/タップできません。

class LeftMenuViewController: UIViewController { 

    let titles: [String] = ["Home", "Category", "Chat", "notification", "Flagger", "Feedback", "Setting", "Log Out"] 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let leftmenuView : LeftMenu = LeftMenu() 
     let nib = UINib(nibName: "LeftMenuCell", bundle : nil) 
     leftmenuView.tableMenu.registerNib(nib, forCellReuseIdentifier: "cell") 
     leftmenuView.tableMenu.dataSource = self 
     leftmenuView.tableMenu.delegate = self 
     leftmenuView.tableMenu.allowsSelection = true 
     leftmenuView.tableMenu.backgroundColor = UIColor.blackColor() 
     self.view.addSubview(leftmenuView) 
    } 
} 

extension LeftMenuViewController : UITableViewDelegate, UITableViewDataSource { 
    func tableView(tableMenu: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return titles.count 
    } 

    func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
     return 1 
    } 

    func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
     return 40 
    } 

    func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) { 
     tableView.deselectRowAtIndexPath(indexPath, animated: true) 
     print("Clicked \(indexPath.row)") 
     switch indexPath.row { 

     case 0: 
      sideMenuViewController?.contentViewController = UINavigationController(rootViewController: HomeViewController()) 
      sideMenuViewController?.hideMenuViewController() 
      break 
     case 1: 
      sideMenuViewController?.contentViewController = UINavigationController(rootViewController:CategoryViewController()) 
      sideMenuViewController?.hideMenuViewController() 
      break 
     default: 
      break 
     } 
    } 

    func tableView(tableMenu: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell:LeftMenuCell = tableMenu.dequeueReusableCellWithIdentifier("cell") as! LeftMenuCell 
     cell.backgroundColor = UIColor.blackColor() 
     cell.menuName.text = titles[indexPath.row] 
     cell.menuName.textColor = UIColor.whiteColor() 
     return cell 
    } 
} 

しかし、私は混乱しています、私のセルは、タップ/クリックすることはできません。私はそれが簡単だと思ったdidDeselectRowAtIndexPath実装?私がそのメソッドの中に印刷しても、 "Clicked"は書き出されません。

私のコードで何が間違っている、誰でも私を助けることができますか?

おかげdidSelectRowAtIndexPath

+0

'leftmenuView'に' frame'またはレイアウト制約を追加しましたか?ビューは、 'frame'がゼロのときに見えるかもしれませんが、相互作用はありません。 –

+0

どうか私を説明できますか?私はこの1つ後にあなたの答えを試しました(didDelectlectRowAtIndexPathをdidSelectRowAtIndexPathに変更してください)、私のタイプミスについては同意しましたが、まだ動作しません。あなたの提案のキャプチャや詳細を添付できますか?多くのおかげで – Alfarabi

+0

'オーバーライドFUNCのviewDidLayoutSubviews追加するようにしてください{ super.viewDidLayoutSubviewsを() leftmenuView.frame = self.view.bounds }' –

答えて

3

変更didDeselectRowAtIndexPath

  • didSelectは、セルがタップされたときに呼び出されます。
  • did別のセルが選択されたときに最初のセルでDeselectが呼び出されました。
+0

はまだ感謝 – Alfarabi

+0

@Alfarabi 'worked'ないISN」:(、働いていません十分な情報がありますか?コンソールログにプリントアウトが表示されていますか?最初にセルが表示されていますか?何も起こりませんでしたか? 'delegate'と'のtableViewのdatasource' –

+0

海[タグ:SimonMcLoughlin]?、私は私の問題の情報のおかげを完了するために、下記の別のポスト/コメントをした:) – Alfarabi

0

didDeslectRowAtIndexPathが依然として呼び出されていない場合、単一選択であることをチェック選択する必要はありません。これは選択しないでください。

スクリーンショットを参照してください。

enter image description here

+0

私はこの1つを試してみましたが、それでも:(多くの感謝 – Alfarabi

0

すべてのビューには、非ゼロのフレームを持っている必要があります。 LeftMenuViewControllerに次のコードを追加してみます:

override func viewDidLayoutSubviews { 
    super.viewDidLayoutSubviews() 
    leftmenuView.frame = self.view.bounds 
} 

また、それは、LeftMenu内部tableViewのために同じであることが、layoutSubviews方法を使用できます。

+0

を動作していませんはい、 LeftMenu.xibという1つのxibファイルを作成し、それをLeftMenu:UIViewに設定しました。このクラスには@IBOutlet var tableMenu:UITableView!私はLeftMenuことを追加しますので、私は今、コントローラ内の1つのサブビューを持っているので、私はサブビュー – Alfarabi

+0

Horaaayyyの内側にもonweのUITableViewを持っている私のLeftMenuViewControllerで は...今その働き、私が使用してあなたの答えは、次のとおりです。{)( オーバーライドFUNCのviewDidLayoutSubviewsを super.viewDidLayoutSubviews() leftmenuView.frame = self.view。範囲 } 結果ページの左メニューが最悪ですが、現在はメニューが正しい場所に移動していますが、試しエラーの別の問題があります。ありがとう[タグ:AndrewBogaevskyi] – Alfarabi

+0

これは良いニュースです:) –

関連する問題