我正在开展一个项目,我们已将UIViewController
覆盖到MyController
,每个MyController
都有MyControllerEvent
var,其中包含导航/ segues其他控制器。例如:
struct HomeControllerEvent: MyControllerEvent {
var goToSettings: () -> ()
var goToHelp: () -> ()
}
class HomeController: MyController {
var event: HomeControllerEvent?
init(_ event: HomeControllerEvent) {
self.event = event
}
}
这样,我就像这样初始化HomeController
:
var homeController: HomeController(goToSettings: {
self.navigationController?.push(SettingsController())
}, goToHelp: {
self.navigationController?.push(HelpController())
})
但是在某些情况下,当我需要推送相同的上一个事件时,我遇到了问题:
var otherController: OtherController(pushAgain: {
self.navigationController?.push(OtherController(otherController.event))
})
这样做时,我收到错误:
在其自身值内使用的变量
那我怎么解决这个问题呢?
感谢您的帮助。
答案 0 :(得分:0)
在将事件添加到初始值设定项之前,尝试将事件设置为其他变量:
var otherController: OtherController(pushAgain: {
let event = otherController.event
self.navigationController?.push(OtherController(event))
})
修改强> 而不是这样做,这是尴尬的,尝试首先初始化,并为#34; pushAgain"设置一个setter:
var otherController : OtherController = OtherController(...);
otherController.setExtraPush(OtherController(otherController.event))