2016-03-05 76 views
0

我把我的工作tableviewcontroller放在pageviewcontroller中。現在我必須以編程方式在tableview中註冊單元格,並且不會爲單元調用awakeFromNib方法。我的自定義單元格中的所有屬性都未初始化,如果嘗試設置內容,應用程序會崩潰。PageViewController中的UITableViewCell行爲有所不同

當我在pageviewcontroller中添加tableviewcontroller時有什麼不同嗎?

self.tableView.registerClass(ParticipantCell.self, forCellReuseIdentifier: ParticipantCell.cellIdentifier) 

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    let index = self.sections[indexPath.section].index+indexPath.row 

    let participant = self.participants[index] 

    let cell = tableView.dequeueReusableCellWithIdentifier(ParticipantCell.cellIdentifier, forIndexPath: indexPath) as! ParticipantCell 

    // cell.setParticipantData(participant) 


    return cell 
} 

回答

0

如果以編程方式創建單元格awakeFromNib未被調用。然而,你可以通過重寫做你的配置:

init(style: UITableViewCellStyle, reuseIdentifier: String?) 

作爲一個建議,你可以有這樣的方法:

override init(style: UITableViewCellStyle, reuseIdentifier: String?) { 
    super.init(style: style, reuseIdentifier: reuseIdentifier) 
    setupCell() 
} 

required init?(coder aDecoder: NSCoder) { 
    super.init(coder: aDecoder) 
    setupCell() 
} 

func setupCell() { 
    // setup your cell here 
} 
+0

所以我必須以編程方式添加每個控件?在IB – netshark1000

+0

中定義的所有內容是,如果以編程方式註冊單元格 –

+0

通過從故事板加載視圖控制器來更改此行爲。現在我不需要註冊該單元,並從被調用的nib喚醒。但屬性仍然沒有 – netshark1000

0

的問題是,Tableviewcontroller被實例化的錯誤。我通過從故事板實例化來解決它:

let storyboard = UIStoryboard(name: "Participants", bundle: NSBundle.mainBundle()) 

if let controller = storyboard.instantiateViewControllerWithIdentifier("ParticipantListController") as? ParticipantListController{ 
... 
} 
相關問題