关于触发一些不同功能的条件 segue 的大量答案(也在这里和更多(,但我试图做的只是使用 OR 运算符说"如果 segue 目标是这个或这个,那么去这里"(要传递的值等保持不变(。
我正在尝试这个:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
//if destination is VC1 OR VC2...
if let destVC = segue.destination as?
FavouriteDetailViewController || FavouriteExerciseDetailViewController
//... then pass the values as specified
destVC.favouriteWorkoutPassed = workoutToPass
destVC.favouriteObjectPassed = favouriteObjectToPass
}
正如我认为 || 将充当"OR"运算符,但我收到错误Optional type 'FavouriteDetailViewController?' cannot be used as a boolean; test for '!= nil' instead
任何帮助感谢:-(
析取类型集(多种类型的"OR"ing(在 Swift 中表示为协议。
使用必要的属性/方法创建新协议:
protocol SomeProtocol { // FIXME: Name me properly
var favouriteWorkoutPassed: { get set }
var favouriteObjectPassed: { get set }
}
扩展所需的类型以符合此协议:
extension FavouriteDetailViewController: SomeProtocol {}
extension FavouriteExerciseDetailViewController: SomeProtocol {}
强制转换为协议类型:
// ...
if let destVC = segue.destination as? SomeProtocol
destVC.favouriteWorkoutPassed = workoutToPass
destVC.favouriteObjectPassed = favouriteObjectToPass
}
// ...