一、在TableViewCell裡擷取對應的TableView
有時我們需要在自定義的單元格( tableViewCell )中擷取其所在的表格( tableView )對象。除了可以從外部把 tableView 傳入到 cell 中去外,還可以通過循環周遊 cell 的 superview 來得到其所在的父 tableView 。
1,擴充UITableViewCell
為友善使用,這裡對 UITableViewCell 進行擴充,添加個方法用來擷取其所在的 tableView 。
1 2 3 4 5 6 7 8 9 10 11 | |
2,使用樣例
我們在每個單元格尾部添加一個按鈕,點選後列印出這個按鈕所在單元格的 indexPath。(先得到 tableView,再根據 tableView 擷取到目前 cell 所在的 indexPath ) (1)效果圖
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL1UTN1cDMzYzM5AzNyITM2EDMy8CXyEjNxAjMvw1ckF2bsBXdfd2bsJ2Lc12bj5SZndmbhhmL3d3dvw1LcpDc0RHaiojIsJye.png)
(2)樣例代碼
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | |
二、擷取任意類型的父View
我們可以對上面的方法做個改進,通過擴充 UIView,讓我們可以獲得任意視圖對象( View)所在的指定類型的父視圖。
1,擴充View
這裡對 UIView 進行擴充,根據傳入的類型,循環周遊擷取該類型的父 View。
1 2 3 4 5 6 7 8 9 10 11 | |
2,使用樣例
這裡對上面樣例代碼做個修改,之前我們在單元格中這麼得到該 cell 所在的 tableView:
1 | |
現在改成這樣:
1 | |