UItableViewCell 中的 Present 函数是否有替代方案?

Is there an alternative for function Present in a UItableViewCell?

我想从 UITableViewCell(Xib) 导航到 UIViewController 但是当我尝试使用 present Value of type 'TableViewCell' has no member 'present 因此,如果有人熟悉可以帮助我导航的功能,请帮助我 :) .

感谢您的宝贵时间

UITableViewCell 无法显示 viewcontroller。请将 viewController 存储到 tableview 单元格中的变量中。并用它来呈现。 或者使用 didSelectRowAt 委托函数并使用 self 来呈现(或者如果您的事件通过单元格中的按钮触发,则编写您的自定义单元格委托)

使您的 ViewController 符合 UITableViewDelegate 协议,然后在您的 ViewController 代码中使用委托方法:func tableView(UITableView, didSelectRowAt: IndexPath) 并在此方法中 perform/present 一个 segue或您拥有的任何其他类型的导航。

import UIKit

class ViewController: UIViewController, UITableViewDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
    }   

    func tableView(UITableView, didSelectRowAt: IndexPath) {
            // navigation logic here
    }


}

在自定义 UITableViewCell 中使用 closure 来处理这种情况。

在您的自定义 UITableViewCell 中创建一个 handler 并在 cell 中点击 button 时调用它,即

class CustomCell: UITableViewCell {
    var handler: (()->())?

    @IBAction func onTapButton(_ sender: UIButton) {
        handler?()
    }
}

现在,在创建cell时,在cellForRowAt中设置handler,即

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! CustomCell
    cell.handler = {
        //present your controller here...
    }
    return cell
}