ฉันกำลังพยายามสร้างเซลล์มุมมองตารางที่กำหนดเองจากปลายปากกา ผมหมายถึงในบทความนี้ที่นี่ ฉันกำลังเผชิญกับสองประเด็น
ฉันสร้างไฟล์. xib โดยมีวัตถุ UITableViewCell ลากไปไว้ ฉันสร้างคลาสย่อยของUITableViewCell
และตั้งเป็นคลาสของเซลล์และเซลล์เป็นตัวระบุที่ใช้ซ้ำได้
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 ในกระดานเรื่องราวฉันไม่ได้ทำอะไรกับเซลล์ ตัวระบุว่างเปล่าและไม่มีคลาสย่อย ฉันพยายามเพิ่มตัวระบุเซลล์ลงในเซลล์ต้นแบบและเรียกใช้อีกครั้ง แต่ฉันได้รับผลลัพธ์เดียวกัน
ข้อผิดพลาดอื่นที่ฉันเผชิญคือเมื่อฉันพยายามใช้วิธีการต่อไปนี้ใน 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
ซึ่งเป็น subclass ของฉัน UITableViewCell แต่ฉันได้รับข้อผิดพลาดดังต่อไปนี้
วิธีการแทนที่ด้วยตัวเลือก 'tableView: willDisplayCell: forRowAtIndexPath:' มีประเภทที่เข้ากันไม่ได้ '(UITableView !, CustomOneCell !, NSIndexPath!) -> ()'
ใครมีความคิดวิธีการแก้ไขข้อผิดพลาดเหล่านี้หรือไม่ สิ่งเหล่านี้ดูเหมือนจะทำงานได้ดีใน Objective-C
ขอบคุณ.
แก้ไข: ฉันเพิ่งสังเกตเห็นว่าฉันเปลี่ยนการวางแนวของเครื่องมือจำลองเป็นแนวนอนและเปลี่ยนกลับเป็นแนวตั้งเซลล์จะปรากฏขึ้น! ฉันยังนึกไม่ออกว่าเกิดอะไรขึ้น ฉันอัปโหลดโปรเจ็กต์ Xcode ที่นี่เพื่อแสดงให้เห็นถึงปัญหาหากคุณมีเวลาสำหรับการมองที่รวดเร็ว