9344


# UIGestureでUITableViewのCellをタップしたら、そのタップしたセルの情報を取得し、

# UIGestureのメソッド内にて、メソッドを定義したいのです。

（さらに具体的には、セルの中に画像を埋め込んでおり、その画像の情報を取得し、  
そのセルの上にさらにImageViewを表示させ、タップしたセルの情報を保存したいです。）

UITableViewDataSourceで定義されている、セルを返すメソッドですが、、↓

[code]

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
        let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! UITableViewCell
        return cell
    }
    
[/code]

**tableView: UITableViewとcellForRowAtIndexPath indexPath: NSIndexPath**
の値が取得できればcellの情報は取得できるのですが、、

通常、このメソッド中で処理すれば良いのですが、  
StoryBoardからTapped GestureでActionを指定しているので、  
それは使えません。

尚、コードでそのcellに関連付けたGestureを関連付けると、  
UITableViewが持っているGesture系のイベントとバッティングして反応しないという現象が起こっているのでStoryBoardのcell上のGestureを貼り付けている状態です。

メソッドの引数にtableView: UITableView, cellForRowAtIndexPath indexPath:
NSIndexPathを追加すればStoryboardから動作しなくなりますし、そもそもメソッドにそれらの引数を追加すれば値が渡ってくるものなのかなという疑問もあります。。。

ご教授いただけないでしょうか。


CC BY-SA 3.0
2015-04-20T05:35:44.983
9336
2016-05-02T00:43:32.410
2015-04-20T19:16:31.493
7362
5828
question
ios swift xcode ios8 storyboard
StoryBoardで作成したUITableViewCellに関連付けたTappedGestureへ、 Cellの情報を渡したい。


コメントだけでは分かりづらいのでサンプルコードで説明させていただきます。  
（説明用のコードのため色々とツッコミどころがあるかもしれませんがご容赦ください）

[code]

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as UITableViewCell
    
        let cellImageView:UIImageView = UIImageView()
        cellImageView.tag = indexPath.row
    
        let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: "tappedImge:")
        cellImageView.addGestureRecognizer(tapGestureRecognizer)
    
        cell.addSubview(cellImageView)
    
        return cell
    }
    
    func tappedImge(sender:UITapGestureRecognizer) {
        let imageView = sender.view as UIImageView  //各cellのcellImageViewを取得
        println(imageView.tag)  //行数を利用する必要がある場合はcellImageViewのtagの値を参照
    }
    
[/code]

上記のような形になっているとして、  
sender.viewでUITapGestureRecognizerを実装したUIView（cellImageView）が取得でき、  
imageView.tagでindexPath.rowの値を取得することが可能です。


CC BY-SA 3.0
2015-04-20T08:31:57.017
9344
2015-04-20T08:31:57.017
3227
9336
answer