我有一个具有委托和实例变量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)
    }

08-07 15:45