我已經在tableview單元格上設置了一個按鈕,我想知道如何操縱它。也就是說,我有興趣改變按鈕的名稱標題,並在點擊按鈕時添加另一個目標(按鈕的不同功能)。我的想法是,這需要被添加到buttonClicked func中,但我不確定如何引用被單擊的特定cellForRow。也許可以在cellForRow中使用一個條件來確定按鈕標題是什麼?我不太確定最好的方法是什麼。Swift 3.0 TableView單元格按鈕
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = guestTableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
let button : UIButton = UIButton(type:UIButtonType.custom) as UIButton
button.frame = CGRect(origin: CGPoint(x: 200,y :60), size: CGSize(width: 100, height: 24))
let cellHeight: CGFloat = 44.0
button.center = CGPoint(x: view.bounds.width/(4/3), y: cellHeight/2.0)
button.setTitleColor(.blue, for: .normal)
button.addTarget(self, action: #selector(buttonClicked), for: UIControlEvents.touchUpInside)
button.setTitle("Add", for: UIControlState.normal)
cell.addSubview(button)
return cell
}
func buttonClicked(sender : UIButton!) {
print("Added!")
}
此代碼會在您的單元中每次出現單元時都堆疊UIButtons。 (因爲出列檢索不再使用,但不一定是新的,所以不管它已經存在) – Pochi
@Pochi我不太清楚什麼是出隊的意思,它在桌面瀏覽中起什麼作用,以及何時出現單元格出院了,你能解釋一下嗎?我怎樣才能避免這些細胞的重用? – Kevin
你不避免重用單元,這是一個UITableView優化。你需要做的是通過界面生成器創建你自己的UITableViewCell的子類,然後你可以將你的按鈕連接到一個屬性。當你使用上面的代碼時,只需使用「as!」將它轉換爲你的自定義子類。並直接訪問該按鈕。既然你現在有一個自定義的子類,你也可以添加一個屬性來標識單元格。這個屬性也必須在上面的代碼中設置(簡單地保存當前索引是好的),那麼你將能夠很容易地知道哪個單元格被按下。 – Pochi