Swift:无法在自定义UITableViewCell中访问IBOutlet

时间:2014-10-28 17:14:54

标签: uitableview swift

我创建了一个自定义UITableViewCell子类,其中包含@IBOutlet属性&#39;标签&#39;,但是当我在viewDidLoad函数中访问它时,它是零。< / p>

TableViewController.swift

import UIKit

class TableViewController: UITableViewController
{
    override func viewDidLoad()
    {
        super.viewDidLoad()

        var cell = TableViewCell(style:UITableViewCellStyle.Default, reuseIdentifier:nil)
        println(cell.label) // nil
    }

}

TableViewCell.swift

import UIKit

class TableViewCell:UITableViewCell
{
    @IBOutlet weak var label: UILabel!
}

Main.storyboard

<tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="TableViewCell" id="cNV-ZQ-ovR" customClass="TableViewCell" customModule="SimpleTable" customModuleProvider="target">
    <autoresizingMask key="autoresizingMask"/>
    <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="cNV-ZQ-ovR" id="3Qh-aQ-Ys2">
        <autoresizingMask key="autoresizingMask"/>
        <subviews>
            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Label" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="H9h-90-Iff">
                <rect key="frame" x="15" y="12" width="252" height="21"/>
                <fontDescription key="fontDescription" type="system" pointSize="17"/>
                <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
                <nil key="highlightedColor"/>
            </label>
        </subviews>
    </tableViewCellContentView>
    <connections>
        <outlet property="label" destination="H9h-90-Iff" id="tMj-pZ-Ad2"/>
    </connections>
</tableViewCell>

Xcode 6.1 build6A1052d

1 个答案:

答案 0 :(得分:1)

如果您在故事板中使用原型单元格并在那里定义单元格的内容和连接,则必须从表格视图中获取该“准备好”单元格的副本。你不能只是创建一个单元格的新对象并期望它工作(你得到一个“原始”实例而不需要任何连接)

您要做的是在Interface Builder中设置原型单元格的标识符(它位于属性检查器中)。然后,要获得单元格的新实例,只需:

tableView.dequeueReusableCellWithIdentifier("yourIdentifier") as TableViewCell

在您的情况下,您正在表视图控制器内进行此调用,因此只需省略tableView.