標籤彙整: swift

在 UITableViewCell 中取得 UITableView 或 UIViewController

在 iOS 7 ~ iOS 10 , UITableViewCell 與 UITableView 中間多了一層 UITableViewWrapperView ,直到 iOS 11 又移除...

將以下兩段複製到繼承 UITableViewCell 的自定義 class 裡

1
2
3
4
5
6
7
8
weak var tableView: UITableView? {
    // 在 iOS 7 ~ 10 中 ,UITableViewCell 的 superview 為 UITableViewWrapperView 而不是 UITableView
    if #available(iOS 11, *) {
        return self.superview as? UITableView
    }else {
        return self.superview?.superview as? UITableView
    }
}
1
2
3
weak var viewController: UIViewController? {
    return self.tableView?.delegate as? UIViewController
}