質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

5718閲覧

[iPhone][Swift]TableViewCellを長押しして、そのセル内のデータを取得したいです。

退会済みユーザー

退会済みユーザー

総合スコア0

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

2クリップ

投稿2015/05/05 04:24

したい動作は、上記のタイトルどうりです。
Objective-Cでは、ネットに記事があり実現出来るのですが、Swiftでの上手い書き方に困っています。
どうか宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jollyjoester

2015/05/06 06:00

Objective-Cの記事はどちらを参考にされているのでしょうか?また「上手い」書き方ということは現状の「下手な」やり方をどう「上手く」したいのか具体化していただけると幸いです。
退会済みユーザー

退会済みユーザー

2015/05/06 06:57

抽象的な表現が多すぎてすいません。http://iritec.jp/iphone/848/さんの記事を参考にしています。 これをSwiftに置き換えてビルドは通ったのですがセルをロングタップするとオプショナルエラーで落ちてしまいます。「下手と上手い」というのは、今現在Swiftでの書き方が知りたかったです。質問の仕方が曖昧で申し訳ございません。
guest

回答1

0

ベストアンサー

こんな感じかな?

lang

1import UIKit 2 3class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 4 5 @IBOutlet weak var tableView: UITableView! 6 var array : Array<String> = [] 7 8 override func viewDidLoad() { 9 super.viewDidLoad() 10 11 self.tableView.delegate = self 12 self.tableView.dataSource = self 13 14 array = ["1", "2", "3", "4", "5", "6"] 15 16 let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: "rowButtonAction:") 17 longPressRecognizer.allowableMovement = 15 18 longPressRecognizer.minimumPressDuration = 0.6 19 self.tableView .addGestureRecognizer(longPressRecognizer) 20 21 } 22 23 func rowButtonAction(sender : UILongPressGestureRecognizer) { 24 25 let point: CGPoint = sender.locationInView(tableView) 26 let indexPath = tableView.indexPathForRowAtPoint(point) 27 28 if let indexPath = indexPath { 29 if sender.state == UIGestureRecognizerState.Began { 30 31 // セルが長押しされたときの処理 32 println("long pressed \(indexPath.row)") 33 } 34 }else{ 35 println("long press on table view") 36 } 37 } 38 39 func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 40 return array.count 41 } 42 43 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 44 let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as! UITableViewCell 45 cell.textLabel?.text = array[indexPath.row] 46 return cell 47 } 48 49 override func didReceiveMemoryWarning() { 50 super.didReceiveMemoryWarning() 51 // Dispose of any resources that can be recreated. 52 } 53}

投稿2015/05/07 05:20

jollyjoester

総合スコア1585

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/05/07 11:13

御回答有難うございました。
tis

2022/02/23 01:59

参考になりましたありがとうございます。gesture部分のところのみSwift5で書き直しました。 let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(rowButtonAction(_:))) longPressRecognizer.allowableMovement = 15 longPressRecognizer.minimumPressDuration = 0.5 tableView.addGestureRecognizer(longPressRecognizer) //セルが長押しされたときの処理 @objc func rowButtonAction(_ sender: UILongPressGestureRecognizer) { let point: CGPoint = sender.location(in:tableView) let indexPath = tableView.indexPathForRow(at: point) if let indexPath = indexPath { if sender.state == UIGestureRecognizer.State.began { // セルが長押しされたときの処理 print("long pressed \(indexPath.row)") } }else{ print("long press on table view") } } あと「tableView」の部分は定義したtableViewの名前にしないとエラーが出る可能性があります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問