您好,感谢您的帮助。我有一个自定义的UITableViewCell,该类的控制器是用Swift编写的。在创建单元时调用所有init函数,但是在调试器中检查时,所有标签和我添加到内容视图的一个图像视图的帧都为0。
这是包含tableView:
的文件class SearchesMainViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet var contentTableView: UITableView?
var tableViewData = SearchesMainTableViewData()
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
internal override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}
override func viewDidLoad(){
super.viewDidLoad()
self.navigationItem.title = "Search"
var nib = UINib(nibName: "SingleSearchTableViewCell", bundle: nil)
contentTableView?.registerNib(nib, forCellReuseIdentifier: SingleSearchTableViewCellController.reuseID())
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return tableViewData.numberOfSectionsInTableView()
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return tableViewData.numberOfRowsInTableSection(section)
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
var cell:SingleSearchTableViewCellController = tableView.dequeueReusableCellWithIdentifier(SingleSearchTableViewCellController.reuseID()) as SingleSearchTableViewCellController
cell.formatCell()
return cell
}
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 54.0
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.deselectRowAtIndexPath(indexPath, animated: false)
}
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
return tableViewData.headerViewForSection(section)
}
func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return tableViewData.heightForTableViewSectionHeaders()
}
func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return tableViewData.heightForTableViewSectionFooters()
}
}
这是单元格的控制器:
class SingleSearchTableViewCellController : UITableViewCell {
@IBOutlet var dateMonthLable : UILabel?
@IBOutlet var dateDayLable : UILabel?
@IBOutlet var yearLable : UILabel?
@IBOutlet var makeModelLable : UILabel?
var search : Search = Search()
class func reuseID() -> String{
return "SingleSearchTableViewCell"
}
required init(coder aDecoder: NSCoder) {
super.init()
}
override init(frame: CGRect) {
super.init(frame: frame)
}
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
}
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
init(previousSearch s : Search){
search = s
super.init()
}
func formatCell(){
formatDateMonthLable()
formatDateDayLable()
formatYearRangeLable()
formatMakeModelLable()
}
private func formatDateMonthLable(){
}
private func formatDateDayLable(){
}
private func formatYearRangeLable(){
}
private func formatMakeModelLable(){
}
}
和界面构建器中包含所有绑定的tableview单元格的图像:
非常感谢任何sugestions或帮助,我是Swift和界面构建器的新手。祝你有愉快的一天:)
修改 什么是从这个代码实际构建的
它接口像我使用nibs的每个其他地方都有一个initWithNib或类似的东西,并且没有像tableview单元格那样的东西。我认为数据和视图的链接可能已关闭或缺失。
答案 0 :(得分:1)
问题是您在单元类中的init覆盖。我对Swift并不熟悉,所以我不知道为什么那里的人除了打电话给super之外什么都不会导致你的子视图不显示。由于你没有在这些方法中做任何事情(或者也是awakeFromNib),你应该删除它们。我认为这将解决您的问题(在我的测试中确实如此)。