我的表视图中包含自定义表格视图单元格。我的问题是,当我尝试为自定义UITableViewCell
中的变量赋值时,我得到了声明的错误。现在,我认为它是因为上述变量没有初始化,但它让我完全难过。
这是自定义表格单元格:
import Foundation
import UIKit
class LocationGeographyTableViewCell: UITableViewCell
{
//@IBOutlet var Map : MKMapView;
@IBOutlet var AddressLine1 : UILabel;
@IBOutlet var AddressLine2 : UILabel;
@IBOutlet var County : UILabel;
@IBOutlet var Postcode : UILabel;
@IBOutlet var Telephone : UILabel;
var location = VisitedLocation();
func Build(location:VisitedLocation) -> Void
{
self.location = location;
AddressLine1.text = "test";
}
}
我在索引路径的行的单元格是:
override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell!
{
var addressCell = tableView.dequeueReusableCellWithIdentifier("ContactDetail") as? LocationGeographyTableViewCell;
if !addressCell
{
addressCell = LocationGeographyTableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: "ContactDetail");
}
addressCell!.Build(Location);
return addressCell;
}
正如我所说,我完全感到困惑,Build函数调用UITableViewCell
中的正确函数。
感谢任何帮助。
TA
答案 0 :(得分:0)
我刚刚使用您的代码创建了一个简单的项目,并且我有一个零“AddressLine1”标签,这会导致您遇到同样的错误。我认为我们有同样的问题。
我通过将标识符“ContactDetail”添加到我的故事板中的原型单元格来解决它。
我还建议您稍微更改一下代码:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
// This newer API ensures that you always get a cell, so no need for optionals.
// Also note the "let" that is preferred since you don't plan on changing addressCell
let addressCell = tableView.dequeueReusableCellWithIdentifier("ContactDetail", forIndexPath: indexPath) as LocationGeographyTableViewCell;
//addressCell.Build(Location); // the cell is a view, views should not know about model objects
addressCell.AddressLine1 = Location.addressLine1
// ... same for all labels, or do all that in a "configureCell" function
return addressCell;
}
答案 1 :(得分:0)
我终于解决了它。我没有使用故事板来定义UITableViewCell(我在父视图控制器中完成),而是使用内容创建了一个Xib,并将其连接到单元格的类,在TableViewController中引用它并分配它在单元格创建的方法中。
viewDidLoad()
{
var nib = UINib(nibName: "LocationTableViewCell", bundle: nil)
tableView.registerNib(nib, forCellReuseIdentifier: "locationCell")
}
var cell:LocationGeographyTableViewCell = self.tableView.dequeueReusableCellWithIdentifier("locationCell") as LocationGeographyTableViewCell
cell.AddressLine1.text = "teetetette";
return cell;