gpt4 book ai didi

ios - Swift:在 block 中使用其自身值的变量

转载 作者:行者123 更新时间:2023-11-30 11:59:27 25 4
gpt4 key购买 nike

我正在开发一个项目,我们已将 UIViewController 重写为 MyController,并且每个 MyController 都有一个 MyControllerEvent var 包含与其他 Controller 的导航/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))
})

这样做时,我收到错误:

Variable used within its own value

那么我该如何解决这个问题呢?

感谢您的帮助。

最佳答案

在将事件添加到初始值设定项之前,尝试将事件设置为不同的变量:

var otherController: OtherController(pushAgain: {
let event = otherController.event
self.navigationController?.push(OtherController(event))
})

编辑:不要这样做,这很尴尬,首先尝试初始化,并为“pushAgain”设置一个 setter :

var otherController : OtherController = OtherController(...);
otherController.setExtraPush(OtherController(otherController.event))

关于ios - Swift:在 block 中使用其自身值的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47440117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com