UITableViewCell自定义属性(在Swift中)

时间:2014-07-29 08:01:11

标签: objective-c xcode uitableview swift realm

我希望能够以编程方式将自定义属性归因于UITableViewCell(或任何其他对象)

我在Swift w / Realm.io DB中使用了委托方法(但我猜测它应该在objective-c中类似)。使用下面注释掉的行==正确的方法吗?

override func tableView(tableView: UITableView?, cellForRowAtIndexPath indexPath: NSIndexPath?) -> UITableViewCell? {
    let cell = tableView!.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as Cell

    let object = array[UInt(indexPath!.row)] as Language
    cell.textLabel.text = object.title
    cell.position = object.position // does not produce any warnings
    return cell
}

归属标题工作得很好(因为它是一个标签),但是如何将其他(未声明的)属性归因于一个单元格,以便以后在遍历tableView时可以恢复它?

for var row = 0; row < tableView.numberOfRowsInSection(0); row++ {
    var cellPath = NSIndexPath(forRow: row, inSection: 0)
    var cell:Cell = tableView.cellForRowAtIndexPath(cellPath) as Cell
    println(cell) // This prints out my cells, which contains a .text property, but no custom properties
}

Println产生以下结果,但位置属性不在其中:

<_TtC8Verbum_24Cell: 0x7f9fb58bd3d0; baseClass = UITableViewCell; frame = (0 0; 320 44); text = 'Italiano'; autoresize = W; layer = <CALayer: 0x7f9fb585bb70>>

<_TtC8Verbum_24Cell: 0x7f9fb58bb670; baseClass = UITableViewCell; frame = (0 44; 320 44); text = 'Francais'; autoresize = W; layer = <CALayer: 0x7f9fb58a44f0>>

更新:我正在为表格单元格使用自定义类:

class Cell: UITableViewCell {

    var position:Int?

    init(style: UITableViewCellStyle, reuseIdentifier: String!) {
        super.init(style: .Subtitle, reuseIdentifier: reuseIdentifier)
    }
}

1 个答案:

答案 0 :(得分:0)

print使用CustomStringConvertible protocol&#39; description方法打印出您的对象。由于您还没有提供自定义说明,因此您只需查看常规的UITableViewCell说明。您可以简单地print(cell.position)或:

var description: String { return "Cell with position \(position)" }