簡體   English   中英

Swift:變量在其自身的值中使用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM