在 UITableViewCell 中取得 UITableView 或 UIViewController

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

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

    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
        }
    }
    weak var viewController: UIViewController? {
        return self.tableView?.delegate as? UIViewController
    }

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *