[英]Use block in Swift giving error “Variable used within its own initial value”
[英]Swift: Variable used within its own value in a block
我正在一個項目上,我們已經將UIViewController
重寫為MyController
,並且每個MyController
都有一個MyControllerEvent
var,其中包含與其他控制器的導航/搜索。 例如:
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))
})
這樣做時出現錯誤:
在其自身值內使用的變量
那么我該如何解決呢?
謝謝你的幫助。
在將事件添加到初始化程序之前,嘗試將其設置為其他變量:
var otherController: OtherController(pushAgain: {
let event = otherController.event
self.navigationController?.push(OtherController(event))
})
編輯:不要這樣做,這很尷尬,請嘗試首先進行初始化,並為“ pushAgain”設置一個setter:
var otherController : OtherController = OtherController(...);
otherController.setExtraPush(OtherController(otherController.event))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.