2016-06-21 3 views
0

テーブルビューをスクロールすると、指が置かれているセルに対してテーブルデリゲートメソッドのdidSelectRowAtIndexPathメソッドが開始されません。その呼び出しを上下にスライドさせる代わりにタップすると、delegateメソッドでindexPathが与えられます。スクロール時にUITableViewのセルのindexPathを取得します。

tableViewをスクロールするときに指が動いているセルのindexPathを取得できるかどうかは疑問でした。これは可能ですか?

答えて

2

これは移動するための方法が考えられます。

class TableViewController: UITableViewController { 

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return 50 
    } 

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     var cell: UITableViewCell! = tableView.dequeueReusableCellWithIdentifier("Cell") 
     if cell == nil { 
      cell = UITableViewCell(style: .Default, reuseIdentifier: "Cell") 
     } 

     cell.textLabel?.text = "\(indexPath.row)" 

     return cell 
    } 

    override func scrollViewWillBeginDragging(scrollView: UIScrollView) { 
     let location = scrollView.panGestureRecognizer.locationInView(tableView) 
     guard let indexPath = tableView.indexPathForRowAtPoint(location) else { 
      print("could not specify an indexpath") 
      return 
     } 

     print("will begin dragging at row \(indexPath.row)") 
    } 

} 
+0

は完全に働いた –

+1

私は助けることができてうれしい。彼は正しい方向を指しているので、いくつかのクレジットは@Wainに行く...;) –

2

テーブルビューのpanGestureRecognizerにアクセスすることができます(スクロールビューのタイプなので)locationInView:を入手してください。次に、テーブルビューにindexPathForRowAtPoint:のインデックスパスに変換するように要求することができます。

+0

私はそれを試してみましょう。ありがとう –

関連する問題