我正在使用Eureka进行settingsVC,我无法从pushRow推送newVC。请注意,我不使用故事板
我的设置相对简单,我的newVC是一个简单的UIViewController,带有一些uitextfields和标签。因为我不使用故事板,我似乎无法使用performSegues和$0.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。
编辑:
我遇到了同样的错误,您可以尝试将返回类型以及参数标签builder
包含在回调中:
row.presentationMode = PresentationMode.show(
controllerProvider: ControllerProvider.callback(builder: { () -> UIViewController in
return AcknowListViewController()
}),
onDismiss: nil)
我想你只需要像这样设置演示模式:
presentationMode = PresentationMode.show(
controllerProvider: ControllerProvider.callback(
{return ChangePhoneNumberViewController()}
), onDismiss: nil)
ControllerProvider.callback
允许您通过从闭包中返回一个VC来提供VC,而不是从nib文件或故事板中返回。