我有一個類MyCell
,它有一個委託和一個實例變量tagToIndex
。我想在委託人修改它之後打印這個變量。目前我的代碼看起來是這樣的:如何訪問委託函數中的變量?
class MyCell: UITableViewCell, YSSegmentedControlDelegate {
var tagToIndex: Dictionary<Int,Int>?
func segmentedControl(_ segmentedControl: YSSegmentedControl, willPressItemAt index: Int) {
tagToIndex[actionButton.tag] = index
}
print(tagToIndex)
}
的問題是,而不是打印tagToIndex
,因爲它在委託函數(willPressItemAt
)存在,tagToIndex
是零。
我也嘗試使用回調將索引發送回視圖控制器。代碼如下所示:
var switchTapIndex: ((Int)->Void)?
func segmentedControl(_ segmentedControl: YSSegmentedControl, willPressItemAt index: Int) {
switchTapIndex?(index)
}
不幸的是,當我在單獨的函數中打印該值時,該值仍然返回「無」。也許我沒有完全理解回調是如何工作的,但我不知道怎麼樣我做的是不是使用像這樣的開關函數內的回調有什麼不同:
var switchTapAction : ((Bool)->Void)?
func switched(_ sender: UISwitch) {
print("Switched: \(sender.isOn)")
// send the Switch state in a "call back" to the view controller
switchTapAction?(sender.isOn)
}
,爲什麼是相關方法之外的'print'語句? – crizzis
[讀取代理函數中存在的變量]的可能重複(https://stackoverflow.com/questions/44679900/reading-a-variable-that-exists-in-a-delegate-function) – crizzis
我不僅必須打印它,我必須在課程中的其他位置實際使用該變量。 –