2015-10-11 20 views
6

これは私のアプリの流れです:TableViewセルを選択できないのはなぜですか?

まず、TableViewは非表示に設定されています。画面の中央にはUITextFieldがあります。ユーザーが何かとヒットが行くときは、このコードが実行されます。この時点で

self.view.layoutIfNeeded() 
UIView.animateWithDuration(0.5, animations: { 

    self.textFieldConstraint.constant = -230 
    self.tableView.hidden = false 
    self.goButton.hidden = true 
    self.view.layoutIfNeeded() 

}, completion: nil) 

は、テーブルビューが移入されます。行が選択されると、データを入力するデータを操作する必要があります。

しかし、セルをタップしても何も起こりません。

私は間違っていますか?

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    let cell: SearchResultsTableViewCell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! SearchResultsTableViewCell 

    cell.label.text = searchResultsNames[indexPath.row] 

    return cell 
} 

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

    return searchResultsUrls.count 

} 

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

    print("HELLO") 

} 

そして、私は適切にデータソースとデリゲートを設定しています

私のテーブルビューのコードはここにあります。

また、tableViewが正しく読み込まれ、スクロールされることを明確にしたいと思います。私はセルをタップするだけで何もしません。

アップデート:私はいくつかの理由で、私は私が押したときにセルを選択し、それらを保持できることを発見した

。それは私が欲しいものではないので、誰もこの問題を解決する方法を知っていますか?

+1

'didSelectRowAtIndexPath'を実装しましたか? – AaoIi

+0

うん、タップしたときに何かを印刷しようとしているが、何も得られていない。 – bkwebhero

+0

StoryboardのTableViewのデリゲートを接続インスペクタから設定しましたか? – AaoIi

答えて

11

は、私はちょうど選択が正常に動作し、期待通りのHELLOをログアウトされ、簡単なテーブルを作成するために、あなたのコードを使用しています。属性インスペクタで選択の値を確認できますか?ここに私のものがあります。セレクションにはシングルセレクションが設定されています。

enter image description here

そして、ここで私は私の単純なテーブル

import UIKit 

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { 

    @IBOutlet weak var tableView: UITableView! 

    var searchResults = [String]() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 

     searchResults.append("Testing 1") 
     searchResults.append("Testing 2") 
     searchResults.append("Testing 3") 
     searchResults.append("Testing 4") 
     searchResults.append("Testing 5") 

     tableView.dataSource = self 
     tableView.delegate = self 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

     let cell = tableView.dequeueReusableCellWithIdentifier("tableCell", forIndexPath: indexPath) 
     cell.textLabel?.text = searchResults[indexPath.row] 

     return cell 
    } 

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return searchResults.count 
    } 

    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
     print("HELLO") 
    } 
} 

のために使用されるコードである私はまた、選択には違いが行われていないのtableViewを隠し、表示しようとしました。

EDIT & SOLUTION:以下のコメントで

、我々は問題がビュー上tapGestureRecogniserに関連していることを発見し、これが唯一のタップを保持することによって選択を行うことができることオペにより同定しましたセル上にこの選択肢を作る前にジェスチャーが失敗しなければならない場合は、これを参照して問題を解決することができます。SO Answer

+0

私のプロジェクトはこれとまったく同じです!これは良い提案ですが、私はまだ同じ問題を抱えています。 tableViewが正しく読み込まれ、スクロールされます。私はセルをタップするだけで何もしません。 – bkwebhero

+0

プロジェクトで「クリーン」を実行しようとしましたが、xcodeを再起動しましたか?私はこのような奇妙な奇妙なバグを取得し、時々それはそれを修正します – Scriptable

+0

はい、複数回。私はコンピュータを再起動しようとしています。私はそれが何かをすることを本当に疑うが、私は考えることができるすべての考えを使い果たした。 – bkwebhero

1

viewDidLoadまたはビューを設定する場所では、テーブルビューでも選択できることを確認してください。これはallowSelection propertyで制御できます。以下のような

何か:

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.tableView.allowsSelection = true 
} 
+1

これは良い提案ですが、私の問題は解決しません! – bkwebhero

1

私の問題は、ビューコントローラー自体のタップジェスチャーレコグナイザーによって引き起こされています(私はBaseTableViewControllerから伸びる)。おそらく、UITableViewのジェスチャー認識機能を妨害していた可能性があります。

3

「タップ」ジェスチャを使用すると、表のセルを選択できません。(ただし、セルを右クリックしてドラッグすると選択できます)

ジェスチャを最初に確認してください。

コードにself.tableView.allowsSelection = falseがある場合は、falseに変更するか、この行を削除してください。

私は別の迅速な3のために、このある、行選択方法をしたので、私はそれを消去し、入力された「didSelectを...」と提案した方法で最初のものを選択し実装された私にとっては
1

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    print("Row #: \(indexPath)") 
} 
0

私はあなたと同じ問題に出会い、あなたはそれを試すことができます以下のコード

self.view.layoutIfNeeded() 

を除去することによって、それを解決しました。

関連する問題