2016-08-14 61 views
1

如何獲得在小區的按鈕在這裏挖一個特定細胞的indexPath.row是我的代碼獲取細胞的indexPath.row

if let indexPath = self.tableView?.indexPathForSelectedRow { 
    print("\(indexPath.row)") 

} 
+0

如果他們已經利用該按鈕,它可能不會是seleced行,因爲按鈕是挖掘,而不是行。您需要獲取對單元格的引用並使用'indexPathForCell' – Paulw11

回答

1

當一個按鈕在你的細胞被竊聽,你需要遍歷該按鈕的superviews鏈,以獲取對UITableViewCell的引用。一旦出現,您可以使用tableView.indexPathForCell(cell: UITableViewCell)函數向tableView索引indexPath。

事情是這樣的:

var optionalCell: UITableViewCell? = nil 
var view: UIView = yourButton 

while view.superView != nil { 
    view = view.superView 
    if view is UITableViewCell { 
    optionalCell = view 
    break 
    } 
} 

if let cell = optionalCell { 
    var indexPath = tableView.indexPathOfCell(cell) 
} else { 
    return 
} 

我不知道你的代碼看起來,但這是它應該是什麼樣子。當然,你可以隨時對它進行破解,並且確切地知道單元格(UITableViewCell)與你的按鈕進行比較的次數,但無論單元格視圖層次結構中按鈕的深度如何,這都可以工作。

+0

最好在單元格和表格ViewController之間建立一個委託協議,並讓單元格在按鈕被點擊時將自己的引用傳遞給委託。 – Paulw11

3

獲得來自按鈕(發送)動作

var cell: UITableViewCell = sender.superview.superview as UITableViewCell 

細胞獲取indexpath

tableView.indexPathForCell(cell) 
+0

這是一個壞方法。它對錶格單元格的佈局做了太多的假設。過去的佈局已經改變,這樣的代碼因此而中斷。不要使用這種方法。 – rmaddy

+0

請多描述一下。我不明白。可能是我錯過了一些東西。讓我來幫忙 :) – Sofeda