我正在尝试在didSelectItemAt
中为我的UICollectionViewCell
指定多个发件人。但是,当我指定多个时,它会在解包可选错误时返回找到的nil。例如
self.performSegue(withIdentifier: "detailViewC", sender: monsters)
self.performSegue(withIdentifier: "detailViewC", sender: abilities)
它会在第二个视图控制器中读取怪物数据,直到我添加第二个发件人abilities
。然后它根本无法读取怪物数据,但它可以读取能力数据。如何指定它们以便下一个视图控制器读取两个发送的值?
答案 0 :(得分:0)
所以你试图暗示什么数据被添加到segue,你想要发送怪物和能力。你首先用怪物召唤了segue,所以你需要将你的能力附加到想要传递给segue的数据上。
你应该有一个包含可选属性或能力的Monster结构。
struct Monster {
var abilities: [Ability]?
}
在拥有怪物之前:[怪物]阵列发送segue,将能力分配给适当的怪物。
答案 1 :(得分:-2)
发送包含怪物和异能的字典作为键的值。 更清晰的模式是传递一个实际的发送者(自己)并将其用作委托,并通过方法调用读取您需要的任何内容。