Bir uçtan özel bir tablo görünümü hücre oluşturmaya çalışıyorum. Burada bu makaleye atıfta bulunuyorum . İki sorunla karşı karşıyayım.
Üzerine sürüklenen bir UITableViewCell nesnesi ile bir .xib dosyası oluşturdum. Bir alt sınıf oluşturdum UITableViewCell
ve onu hücre sınıfı ve Hücre'yi yeniden kullanılabilir tanımlayıcı olarak ayarladım .
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 bu kod var,
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
}
}
Bu kod hiçbir hata ile uyumlu değildir, ancak simülatörde çalıştırdığımda, böyle görünüyor.
Film şeridindeki UITableViewController'da hücreye hiçbir şey yapmadım. Boş tanımlayıcı ve alt sınıf yok. Prototip hücresine Hücre tanımlayıcısını eklemeyi denedim ve tekrar çalıştırdım ama aynı sonucu alıyorum.
UITableViewController içinde aşağıdaki yöntemi uygulamaya çalışırken karşılaştığım başka bir hata.
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]
}
Bahsettiğim yazıda gösterildiği gibi Değiştim cell
parametrenin tipi formunu UITableViewCell
için CustomOneCell
hangi UITableViewCell benim alt sınıfıdır. Ama şu hatayı alıyorum,
'TableView: willDisplayCell: forRowAtIndexPath:' uyumsuz türüne sahip '(UITableView !, CustomOneCell !, NSIndexPath!) -> ()' seçicisi ile geçersiz kılma yöntemi
Herkes bu hataları çözmek için herhangi bir fikri var mı? Bunlar Objective-C'de işe yaramış gibi görünüyordu.
Teşekkür ederim.
DÜZENLEME: Simülatörün yönünü yatay olarak değiştirip tekrar portre haline döndürürsem, hücreler ortaya çıkıyor! Hala neler olduğunu anlayamıyordum. Bir Xcode projesini yüklenen burada hızlı bir görünüm için zamanınız varsa sorunu gösteren.