Swiftで遊ぼう! on Hatena

あしたさぬきblogでやってた初心者オヤジのiOSプログラミング奮闘記がHatenaに来ました

Swiftで遊ぼう! - 649 - Table ViewにLongPressGestureを実装してみる

次のTable Viewのチュートリアルを拡張しています。

yataiblue.hatenablog.com

LongPressGesture(ロングプレス・ジャスチャー)を使ってCellを選択して順番入れ替え機能を実装していきます。

まずTableViewにUILongPressGestureRecognizerクラスを組み込む必要があります*1。TableViewにジェスチャー機能を組み込むのですが、組み込むためのコードを書くのはViewControllerになるため、viewDidLoad()メソッド内に次のコードを加えます。

let longPressGesture = UILongPressGestureRecognizer(target: self, 
                 action: #selector(ViewController.longPressed(_:)))

simpleTableView.addGestureRecognizer(longPressGesture)

まず最初のコードですが、これはジェスチャーをインスタンス化させるイニシャライザーです。このジャスチャーで「何処に働きかけるか?」が「target」です。「self」にしているので、ViewControllerに書かれているアクション・メソッドが起動します。

ここでちょっと疑問があります。ネットで調べると、「action:」に指定する書式は、「"longPressed:"」*2のようにString型で記述する方法で説明されています。Xcode7.3で記述してもエラーにはならないのですが警告が出るんです。「Objective-Cスタイルなので#selectorを使うように提案されます。それを選ぶと上記のようなコードになります*3。この書き方が推奨されているのでしょうか?

ロング・プレスジェスチャーをインスタンス化したので、これをsimpleTableViewに組み込んで準備完了です。

今日はこれまで。

*1:ここで少なくとも実装法に2通りあることを知ってますよね。皆さん。storyboardを使って実装するのが簡単なんですが、コードで実装する方法で説明します。また時間があればstoryboardからの実装の説明を後で加えます。

*2:このメソッドは後で用意しなければならないカスタムメソッドです。まだ説明してないのでコードを書くとエラーになりますが気にしないように。

*3:self.longPressed(_:)を使ってもいいようです。