簡體   English   中英

使用UITableView中的UIButton發送多個標簽

[英]Send multiple tags with UIButton in UITableView

我遭受了向函數發送兩個標簽以顯示UIActivityViewController並共享單元格數據的痛苦,這早於我過去一次在單個UIButton一次發送一個值之前:

cell.sharefb.tag = indexPath.row
cell.sharefb.addTarget(self, action: "showAlert:", forControlEvents:UIControlEvents.TouchUpInside)

但是現在我已經在UITableView實現了部分,所以我的數組就像:

Array[indexPath.section][indexPath.row]

其中一個(節或行)一次還不夠,我需要將兩者都發送給我的函數嗎? 我怎樣才能做到這一點 ?

func showAlert(sender:AnyObject){
    // i want to use it like :
    Array[sender.sectionvalue][sender.rowvalue]
}

您可以子類化UIButton並為所需的數據添加屬性,例如

class MyButton : UIButton {

var row : Int?
var section : Int?

}

然后可以設置這些屬性,並在showAlert函數中將其取回並使用:

 func showAlert(sender:AnyObject){

    let theButton = sender as! MyButton

    let section = theButton.section
    let row = theButton.row

    }

編輯:添加了根據請求的注釋在何處設置按鈕:

在StoryBoard中,確保按鈕的類型為MyButton(不再是UIButton)。

然后用於設置標記的位置,請不要使用標記,而是要設置屬性。 因此,替換此代碼:

cell.sharefb.tag = indexPath.row
cell.sharefb.addTarget(self, action: "showAlert:", forControlEvents:UIControlEvents.TouchUpInside)

與:

 cell.sharefb.row = indexPath.row
 cell.sharefb.section = indexPath.section
 cell.sharefb.addTarget(self, action: "showAlert:", forControlEvents:UIControlEvents.TouchUpInside)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM