펜촉에서 사용자 정의 테이블 뷰 셀을 만들려고합니다. 이 기사를 여기에서 참조하고 있습니다 . 두 가지 문제에 직면하고 있습니다.
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에서 나는 셀에 아무것도하지 않았습니다. 빈 식별자이며 하위 클래스가 없습니다. 프로토 타입 셀에 셀 식별자를 추가하고 다시 실행했지만 동일한 결과를 얻습니다.
내가 직면 한 또 다른 오류는 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 프로젝트를 여기에 업로드했습니다 .