我有一个具有委托和实例变量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
为nil,而不是打印委托函数(willPressItemAt
)中存在的tagToIndex
。我也尝试过使用回调将索引发送回视图控制器。代码如下:
var switchTapIndex: ((Int)->Void)?
func segmentedControl(_ segmentedControl: YSSegmentedControl, willPressItemAt index: Int) {
switchTapIndex?(index)
}
不幸的是,当我在单独的函数中打印该值时,该值仍然返回“ nil”。也许我无法完全理解回调的工作原理,但是我不明白我在做什么与在switch函数中使用回调有何不同:
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)
}
最佳答案
在这里,您可能没有将tagToIndex
设置为nil,因为您没有初始化该变量。试一试,
func segmentedControl(_ segmentedControl: YSSegmentedControl, willPressItemAt index: Int) {
if tagToIndex == nil {
tagToIndex = Dictionary()
}
tagToIndex[actionButton.tag] = index
}
print(tagToIndex)
}