はじめに
カスタムセルなどを利用するときに、tableView.register(UINib(nibName: "CustomCellNib", bundle: nil),
こんな感じでtableViewにカスタムセルを登録していませんか?
forCellReuseIdentifier: "CustomCellId")
これだと、プログラマが気付かぬうちに文字列の一文字を消してしまっても、Xcodeはエラーを出してくれません。ビルドして初めてエラーが出るのです。できれば文字列を打たずに済ませたいですよね。その方法をご紹介します。
実装
class MyTableViewCell: UITableViewCell {
static var identifier: String { String(describing: self) }
static var nib: UINib { UINib(nibName: String(describing: self), bundle: nil) }
}
そして、以下のようにController
のviewDidLoad()
でセルを登録しましょう。ちなみに、カスタムセルのid
をインスペクタで登録する必要はありません。
tableView.register(MyTableViewCell.nib, forCellReuseIdentifier: MyTableViewCell.identifier)
そして、UITableViewDataSource
のcellForRowAt
で以下のようにセルのidentifier
を同じように打てば終わりです。
let cell = tableView.dequeueReusableCell(withIdentifier: MyTableViewCell.identifier, for: indexPath) as! MyTableViewCell
return cell
おわりに
文字列を極力打たないようにしたり、同じ文字列はハードコーディングしたりすることは、修正が入った時に修正箇所が一箇所で済んだり、今回紹介したような方法などではXcodeの補完が扱えるようになるので、タイプミスも減ります。メリットしかないので、ぜひ使ってみてください。(スニペットなどに登録しておくといいかもしれません。)