2016-08-20 56 views
0

我有一個包含3種類型的自定義單元格的表格視圖。 故事板中的界面。每次創建新的UITableView(不重用任何單元格)

單元項目中有3個不同的類。

我現在正在這樣做,並且單元格IBOutlets出來是零。

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
let cell = ListCell() 
    cell.configureCell(Data[indexPath.row]) 
    return cell 
} 


class ListCell : UITableViewCell { 

@IBOutlet weak var selectButton: UIButton! 

func configureCell(data: ParamList) { 
    selectButton.setTitle("Select " + data.name, forState: .Normal) 
} 

@IBAction func selectButtonPressed(sender: AnyObject) { 
    print(selectButton.currentTitle) 
} 

} 

我不想重用任何單元格,因爲每個單元格都有不同的屬性。 有些文本框具有不同的交互方式,最終需要提交給web服務。

我想爲每個單元格在內存中創建新的單元格。 最大細胞將在15左右。所以不會有太多內存問題。

我可以這樣做嗎?

+0

如果您希望能夠從故事板中取出原型單元格,那麼您將需要使用不同的重用標識符創建適當數量的原型單元格。另一種方法是以編程方式創建用戶界面元素,而不是使用故事板出隊 – Paulw11

回答

0

我終於解決了這個問題。 以下是我爲此所做的。 我正在描述我的過程,如果其他人想要做同樣的事情。

警告,只有在絕對必要的情況下才能做到這一點,並且您沒有可影響性能的許多單元。

爲了使UITableView的單元格保留在內存中,即使在屏幕外滾動,也要在滾動視圖中封裝您的表格視圖,並將您的UITableView的scrollEnabled設置爲false。

如果使用Storyboards爲您的TableView設置高度約束並將IBOutlet製作爲您的代碼文件。

以編程方式添加具有不同標識符的新單元格。

"\(indexPath.section)\(indexPath.row)"

獲取數據後,請將您的tableView的高度,以您的數據計數的乘數。

tableViewHeightConstraint.constant = heightOfOneCell * data.count tableView.delegate = self tableView.dataSource = self

這樣你就可以用了滾動和所有的細胞滾動仍然會在內存中。

-2

設置裏面的方法dequeueReusableCellWithIdentifier。所以你可以在內存中得到你想要的單元數量。

+0

標識符是字符串不是字符串?所以零不起作用。 –

相關問題