2017-04-01 97 views
2

在我的應用程序中,我使用xib文件自定義tableView單元格。我創建的.xib文件出口到我TableViewCell類UITableView和使用.xib的自定義UITableViewCell

標籤等在我的ViewController我用它來填充,並顯示在表視圖單元格中的代碼如下:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let transaction = statementArray[indexPath.row] 
    let cell = Bundle.main.loadNibNamed("StatementCell", owner: self, options: nil)?.first as! StatementCell 



    cell.transAmount.text = String(transaction.transAmount) 
    cell.transDesc.text = transaction.transDesc 
    cell.transFees.text = String(transaction.transFees) 

    return cell 
} 

我知道TableViews的工作方式是重複使用離開屏幕的單元格。他們的方式是我加載.xib並填充單元格是否正確?或者我必須添加一些東西給我的代碼?

+0

是否有使用.xib的特定原因?您可以在Interface Builder的同一個表格視圖中創建多個單元格。 – vadian

+0

我正在使用.xib,因爲我將使用不同的單元格,具體取決於我擁有的數據 – pavlos

+0

問題在哪裏?您可以使用不同的UI元素,大小等在相同的表視圖中創建任意數量的單元格。只需將單元格拖動到表格視圖中,並指定一個標識符和(可選)一個類。這比使用額外的.xibs更方便。 – vadian

回答

0

還有一件事是你需要在viewDidLoad方法中註冊你的類重用標識符。

YourTable.registerclass(tablecell, forCellReuseIdentifier: "identifier" 

並確保您已連接所有必需的插座。在實現代碼如下

let str1 : NSString = "StatementCell" 

tableView.register(UINib(nibName: "StatementCell", bundle: nil), forCellReuseIdentifier: str1 as String) 

+0

因此,這行代碼基本上註冊自定義單元類以便重用單元格? – pavlos

+0

是的,在我的代碼中,我也用....在應用這個之前,我得到了一些崩潰,使用後它工作正常.... –

0

先註冊自定義單元格nibCalss現在初始化tableviewcell

let cell1:StatementCell = tableView.dequeueReusableCell(withIdentifier: str1 as String) as! StatementCell! 

現在訪問tableviewcell出口集合。

1

首先,你需要的UITableView

yourTableView.register(UINib(nibName: "StatementCell", bundle: nil), forCellReuseIdentifier: "cellIdentifier") 

然後在UITableView的委託方法來註冊你的自定義單元格cellForRowAt你需要寫

let cell = tableView.dequeueReusableCell(withIdentifier: "cellIdentifier", for: indexPath) as! StatementCell 
cell.textLabel?.text = "Sample Project" 
return cell 

現在你可以用cell.propertyName

訪問您的UITableViewCell屬性

您必須注意「cellIdentifier」和「forCellReuseIdentifier」的值都必須相同。

相關問題