我创建了一个自定义UITableViewCell
子类,其中包含@IBOutlet
属性'标签',但是当我在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
答案 0 :(得分:1)
如果您在故事板中使用原型单元格并在那里定义单元格的内容和连接,则必须从表格视图中获取该“准备好”单元格的副本。你不能只是创建一个单元格的新对象并期望它工作(你得到一个“原始”实例而不需要任何连接)
您要做的是在Interface Builder中设置原型单元格的标识符(它位于属性检查器中)。然后,要获得单元格的新实例,只需:
tableView.dequeueReusableCellWithIdentifier("yourIdentifier") as TableViewCell
在您的情况下,您正在表视图控制器内进行此调用,因此只需省略tableView.