尝试调试时 willDisplayHeaderView 属性始终为 NIL iOS/iPadOS Apple Silicon Mac App

willDisplayHeaderView properties always NIL when trying to debug iOS/iPadOS Apple Silicon Mac App

这是一个奇怪的问题 -- 我终于得到了 Apple Silicon MacBook Pro,我正试图解决 运行 我的 iOS/iPadOS 应用程序在苹果硅。出于某种原因,tableview,特别是 willDisplayHeaderView view returns as Nil.

此示例代码因要求而崩溃:

 override func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
    let headerView = view as! UITableViewHeaderFooterView
    headerView.textLabel!.textColor = UIColor.white
    let font = UIFont(name: "Avenir-Medium", size: 16.0)
    headerView.textLabel!.font = font
    
    headerView.backgroundView!.backgroundColor = UIColor.init(red: 28, green: 28, blue: 30, transparancy: 100)
    headerView.tintColor = UIColor.init(red: 28, green: 28, blue: 30, transparancy: 100)
    
    headerView.textLabel!.textAlignment = .center
}

这个示例代码,没有崩溃,因为它们是可选的但也没有效果:

 override func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
    let headerView = view as! UITableViewHeaderFooterView
    headerView.textLabel?.textColor = UIColor.white
    let font = UIFont(name: "Avenir-Medium", size: 16.0)
    headerView.textLabel?.font = font
    
    headerView.backgroundView?.backgroundColor = UIColor.init(red: 28, green: 28, blue: 30, transparancy: 100)
    headerView.tintColor = UIColor.init(red: 28, green: 28, blue: 30, transparancy: 100)
    
    headerView.textLabel?.textAlignment = .center
}

知道为什么 运行 通过 XCODE“我的 Mac(专为 iPad 设计)”导致 header/footer 视图返回为 Nil ?在真实 iPad 和 iOS compile/simulator.

上工作正常

看起来“textLabel”已被弃用,这就是您需要为 iOS 14+:

做的
 let headerView = view as! UITableViewHeaderFooterView
    
    if #available(iOS 14.0, *) {
        var config = headerView.defaultContentConfiguration()
        config.text = "Hello"
        headerView.contentConfiguration = config
    } else {
        // Fallback on earlier versions
        headerView.textLabel?.text = "Hello"
    }