Eureka:如何在没有 Segue 的情况下从 PushRow 推送 VC

Eureka: How to push a VC from a PushRow without Segue

我正在使用 Eureka 进行设置VC,但我无法从 pushRow 推送新的VC。 注意我没有使用故事板

我的设置相对简单,我的新VC 是一个带有一些 uitextfields 和标签的简单 UIViewController。因为我不使用故事板,所以我似乎无法使用 performSegues 和 [=12=].presentationMode = .segueName(segueName: "RowsExampleViewControllerSegue", onDismiss: nil)

我也查看了这个 但是这个 post 对于我的申请来说相对牵强。

目前我的实现是这样的:

class AccountsViewController: FormViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        form +++ Section("Profile")

            <<< PushRow<String>() { row in
                row.title = "Edit phone number"
                row.value = "+61 12345678"
                }.onCellSelection({ (cell, row) in
self.navigationController?.pushViewController(ChangePhoneNumberViewController(), animated: true)
            })

上述方法将 VC 推送两次。

我想采用 pushRow 的原因是因为我希望它采用 pushRow 美学外观,如附图所示。我也考虑过探索 ButtonRow 但 UI/UX 是不对的。继续前进,我还需要使用协议将新的 "phoneNumber" 引入 AccountsViewController。

编辑:

尝试了以下代码但产生了错误消息。

我想你只需要像这样设置演示模式:

presentationMode = PresentationMode.show(
    controllerProvider: ControllerProvider.callback(
        {return ChangePhoneNumberViewController()}
    ), onDismiss: nil)

ControllerProvider.callback 允许您通过从闭包而不是从 nib 文件或情节提要中返回一个来提供 VC。

我遇到了同样的错误,您可以尝试在回调中包含 return 类型和参数标签 builder

row.presentationMode = PresentationMode.show(
                controllerProvider: ControllerProvider.callback(builder: { () -> UIViewController in
                    return AcknowListViewController()
                }),
                onDismiss: nil)