第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

問(wèn)題檢測(cè)按鈕cellForRowAt

問(wèn)題檢測(cè)按鈕cellForRowAt

慕虎7371278 2020-02-02 15:01:34
我需要檢測(cè)是否在UITableViewController中單擊了按鈕override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let LikesBtn = cell.viewWithTag(7) as! UIButton}
查看完整描述

3 回答

?
慕仙森

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊

Swift中最簡(jiǎn)單,最有效的方法是回調(diào)閉包。


子類UITableViewCell,用于標(biāo)識(shí)UI元素的viewWithTag方法已過(guò)時(shí)。

將自定義單元格的類設(shè)置為子類的名稱,并ButtonCellIdentifier在Interface Builder 中將標(biāo)識(shí)符設(shè)置為。


添加一個(gè)callback屬性。


添加一個(gè)動(dòng)作并將按鈕連接到該動(dòng)作。


class ButtonCell: UITableViewCell {


    var callback : (()->())?


    @IBAction func buttonPressed(_ sender : UIButton) {

       callback?()

    }

}

在cellForRow回調(diào)分配到自定義單元格。


override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "ButtonCellIdentifier", for: indexPath) as! ButtonCell

     cell.callback = {

         print("Button pressed", indexPath)  

     }

     return cell

  }

當(dāng)按下按鈕時(shí),將調(diào)用回調(diào)。索引路徑被捕獲。


編輯


如果可以添加或刪除細(xì)胞,則有一個(gè)警告。在這種情況下,通過(guò)從數(shù)據(jù)源數(shù)組獲取當(dāng)前索引來(lái)更新索引路徑


override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

     let cell = tableView.dequeueReusableCell(withIdentifier: "ButtonCellIdentifier", for: indexPath) as! ButtonCell

     let item = dataSourceArray[indexPath.row]

     // do something with item

     cell.callback = {

         let actualIndexPath = IndexPath(row: dataSourceArray.index(of: item)!, section: indexPath.section)

         print("Button pressed", actualIndexPath)  

     }

     return cell

  }

如果甚至section可以更改,那么協(xié)議/代理可能會(huì)更有效。


查看完整回答
反對(duì) 回復(fù) 2020-02-02
?
ibeautiful

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊

這是我用的:


首先初始化按鈕作為Outlet和其action上的TableViewCell


class MainViewCell: UITableViewCell {


@IBOutlet weak var testButton: UIButton!


@IBAction func testBClicked(_ sender: UIButton) {


    let tag = sender.tag //with this you can get which button was clicked 


}




}

然后在您的主控制器中的cellForRow函數(shù)中,像這樣初始化按鈕的標(biāo)簽:


class MainController: UIViewController, UITableViewDelegate, UITableViewDataSource, {


     func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {


        let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! MainViewCell



        cell.testButton.tag = indexPath.row        


        return cell

    }


}


查看完整回答
反對(duì) 回復(fù) 2020-02-02
  • 3 回答
  • 0 關(guān)注
  • 998 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)