Swift:变量在块

时间:2017-11-22 16:55:51

标签: ios swift

我正在开展一个项目,我们已将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))
})

这样做时,我收到错误:

  

在其自身值内使用的变量

那我怎么解决这个问题呢?

感谢您的帮助。

1 个答案:

答案 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))