2016-07-22 103 views
1

我有一個CustomCell類,它有一個按鈕。我正在使用原型單元格(不是.xib)。我想讓tableviewcell中的按鈕執行一個segue並將一個值傳遞給一個新類。我如何爲tableviewcell中的按鈕創建一個獨特的動作?謝謝!從TableViewCell中的Button執行Segue

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    ... 

    selectedAreaCode = areaCodes[indexPath.row] 

    // Configure Cell 
    cell.areaCodeButton.setTitle(areaCode, forState: UIControlState.Normal) 


    cell.areaCodeButton.addTarget(self, action: "segue", forControlEvents: UIControlEvents.TouchUpInside) 

    cell.selectionStyle = UITableViewCellSelectionStyle.None 


    return cell 
} 

func segue() { 

    self.performSegueWithIdentifier("toDialer", sender: self) 
} 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

    if(segue.identifier == "toDialer") { 

     let nextViewController = (segue.destinationViewController as! PhoneDialer) 
     nextViewController.passedAreaCode = selectedAreaCode 
    } 
} 
+0

因此,您有多個「CustomCell」單元,每個單元都有一個按鈕可以完成不同的操作? – gadu

+0

使用'cell.button.tag = indexPath.row' – Lamar

+0

如果您希望同一個表的單元格延伸到不同的視圖,則必須爲它們提供不同的重用標識符。 – orccrusher99

回答

1

有一堆的方式獲得您的自定義單元格的龍頭作用,但我假設你想,因爲你想Segue公司檢索從UIViewController的動作。

因爲您正在將一個單元出隊,所以您可以簡單地在您的cellForRowAtIndexPath函數的範圍內完全訪問單元。只要您將按鈕作爲單元格的公共屬性,您可以將該按鈕的目標設置爲您的segue方法。

此外,因爲你想傳遞的是按鈕本身的標題,你可以從選擇器訪問發送者。

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = yourCell() 
    cell.button.addTarget(self, action: #selector(tap(:)), forControlEvents: .TouchUpInside) 
} 

func segue(sender: UIButton) { 
    // Perform segue and other stuff 
    sender.title // This is the area code 
} 
+0

謝謝,我正在嘗試這個;但是,傳遞的值始終是我的tableView中的最後一個值 –

+0

我可以請求查看您的代碼嗎? – jimmyy

+0

我將它添加到主帖 –