ペン先からカスタムテーブルビューセルを作成しようとしています。私はこの記事をここで参照しています。私は2つの問題に直面しています。
UITableViewCellオブジェクトをドラッグして.xibファイルを作成しました。のサブクラスを作成し、UITableViewCell
それをセルのクラスとして、Cellを再利用可能な識別子として設定しました。
import UIKit
class CustomOneCell: UITableViewCell {
@IBOutlet weak var middleLabel: UILabel!
@IBOutlet weak var leftLabel: UILabel!
@IBOutlet weak var rightLabel: UILabel!
required init(coder aDecoder: NSCoder!) {
super.init(coder: aDecoder)
}
override init(style: UITableViewCellStyle, reuseIdentifier: String!) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
}
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
UITableViewControllerにこのコードがあります。
import UIKit
class ViewController: UITableViewController, UITableViewDataSource, UITableViewDelegate {
var items = ["Item 1", "Item2", "Item3", "Item4"]
override func viewDidLoad() {
super.viewDidLoad()
}
// MARK: - UITableViewDataSource
override func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
return items.count
}
override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
let identifier = "Cell"
var cell: CustomOneCell! = tableView.dequeueReusableCellWithIdentifier(identifier) as? CustomOneCell
if cell == nil {
tableView.registerNib(UINib(nibName: "CustomCellOne", bundle: nil), forCellReuseIdentifier: identifier)
cell = tableView.dequeueReusableCellWithIdentifier(identifier) as? CustomOneCell
}
return cell
}
}
このコードはエラーに準拠していませんが、シミュレーターで実行すると次のようになります。
ストーリーボードのUITableViewControllerでは、セルに対して何もしていません。空白の識別子で、サブクラスはありません。セル識別子をプロトタイプセルに追加してもう一度実行したところ、同じ結果が得られました。
私が直面したもう1つのエラーは、UITableViewControllerに次のメソッドを実装しようとしたときです。
override func tableView(tableView: UITableView!, willDisplayCell cell: CustomOneCell!, forRowAtIndexPath indexPath: NSIndexPath!) {
cell.middleLabel.text = items[indexPath.row]
cell.leftLabel.text = items[indexPath.row]
cell.rightLabel.text = items[indexPath.row]
}
記事で示したように、cell
パラメーターの型フォームUITableViewCell
をCustomOneCell
UITableViewCellのサブクラスに変更しました。しかし、私は次のエラーを受け取ります、
セレクター 'tableView:willDisplayCell:forRowAtIndexPath:'でメソッドをオーバーライドすると、互換性のないタイプ '(UITableView !, CustomOneCell !, NSIndexPath!)->()'が含まれます
誰でもこれらのエラーを解決する方法を知っていますか?これらはObjective-Cでは問題なく動作するようです。
ありがとうございました。
編集:シミュレータの向きを横に変更して縦に戻すと、セルが表示されることに気づきました!私はまだ何が起こっているのか理解できませんでした。ここに Xcodeプロジェクトをアップロードして、簡単に確認する時間がある場合の問題を示します。