Swift:IBoutlet总是返回nil对象?

时间:2014-07-25 11:00:50

标签: ios objective-c uitableview swift

我有自定义UItableViewCell的UItableView及其nib文件。

func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell!
{
    let cell = tableView.dequeueReusableCellWithIdentifier(quoteCellIdentifier, forIndexPath: indexPath) as DynamicTableViewCell

    if (cell == nil)
    {
        println("Not Initialized")
    }
    println(cell)
    println(cell.scenarioLabel)

    return cell
}

控制台O / p

<_TtC17Dynamic_Cell_Demo20DynamicTableViewCell: 0xb291a70; baseClass = UITableViewCell; frame = (0 0; 320 44); layer = <CALayer: 0xb291e40>>

For Lable : null

自定义UITableViewCell

class DynamicTableViewCell: UITableViewCell {

@IBOutlet var scenarioLabel: UILabel
@IBOutlet var quoteContentLabel: UILabel    

连接

enter image description here

3 个答案:

答案 0 :(得分:4)

我认为您在tableview中未注册nib,请在-viewDidLoad

中尝试此操作

在斯威夫特:

tableView.registerNib(UINib(nibName: "DynamicTableViewCell", bundle:nil), forCellReuseIdentifier: quoteCellIdentifier)

在Objective-C中:

[self.tableView registerNib:[UINib nibWithNibName:@"DynamicTableViewCell"
                         bundle:nil]]
         forCellReuseIdentifier: quoteCellIdentifier];

答案 1 :(得分:1)

根据@yatheesha的回答,我只是转换成快速语言

var dynCellQuote = UINib(nibName: "DynamicTableViewCell", bundle: nil)

    tableViewForQuotes.registerNib(dynCellQuote, forCellReuseIdentifier: quoteCellIdentifier)

答案 2 :(得分:0)

当您的类名是TabBarViewController等通用类名时,可能会出现此错误。不是你的情况,但在这种情况下我得到了这个错误。