"func prepareForSegue" 不调用 CollectionView
"func prepareForSegue" not calling for CollectionView
是否可以使用 shouldPerformSegueWithIdentifier
通过以下方法捕捉 segue 的移动:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?){
}
这是我的视图控制器代码:
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
let poke:Pokemon!
if inSearchMode {
poke=filterPokemons[indexPath.row]
} else {
poke=pokemonlist[indexPath.row]
}
shouldPerformSegueWithIdentifier("PokemonDetailVC", sender: poke);
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "PokemonDetailVC" {
if let detailVC = segue.destinationViewController as? PokemonDetailVC{
if let poke = sender as? Pokemon {
detailVC.pokemon=poke;
}
}
}
}
故事板 segue 参考
尝试:
performSegueWithIdentifier("Identifier", sender: self)
而不是:
shouldPerformSegueWithIdentifier("Identifier", sender: self)
当我们使用shouldPerformSegueWithIdentifier
时,我们可以通过以下方法捕捉segue的移动:
override func shouldPerformSegueWithIdentifier(identifier: String, sender: AnyObject?) -> Bool
检查此 link:Prevent segue in prepareForSegue method?
你需要调用 performSegueWithIdentifier
而不是 shouldPerformSegueWithIdentifier
因为 shouldPerformSegueWithIdentifier
方法让你有机会防止 segue 发生。从此方法返回 NO 会导致 segue 无法执行。
如果您想了解有关 shouldPerformSegueWithIdentifier
的更多详细信息,请查看此 apple documentation
其中 performSegueWithIdentifier
方法允许将数据从源视图控制器传递到目标视图控制器。
所以现在只需像这样调用 performSegueWithIdentifier
而不是 shouldPerformSegueWithIdentifier
。
performSegueWithIdentifier("PokemonDetailVC", sender: poke)
在Swift3.0
self.performSegue(withIdentifier: "PokemonDetailVC", sender: poke)
是否可以使用 shouldPerformSegueWithIdentifier
通过以下方法捕捉 segue 的移动:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?){
}
这是我的视图控制器代码:
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
let poke:Pokemon!
if inSearchMode {
poke=filterPokemons[indexPath.row]
} else {
poke=pokemonlist[indexPath.row]
}
shouldPerformSegueWithIdentifier("PokemonDetailVC", sender: poke);
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "PokemonDetailVC" {
if let detailVC = segue.destinationViewController as? PokemonDetailVC{
if let poke = sender as? Pokemon {
detailVC.pokemon=poke;
}
}
}
}
故事板 segue 参考
尝试:
performSegueWithIdentifier("Identifier", sender: self)
而不是:
shouldPerformSegueWithIdentifier("Identifier", sender: self)
当我们使用shouldPerformSegueWithIdentifier
时,我们可以通过以下方法捕捉segue的移动:
override func shouldPerformSegueWithIdentifier(identifier: String, sender: AnyObject?) -> Bool
检查此 link:Prevent segue in prepareForSegue method?
你需要调用 performSegueWithIdentifier
而不是 shouldPerformSegueWithIdentifier
因为 shouldPerformSegueWithIdentifier
方法让你有机会防止 segue 发生。从此方法返回 NO 会导致 segue 无法执行。
如果您想了解有关 shouldPerformSegueWithIdentifier
的更多详细信息,请查看此 apple documentation
其中 performSegueWithIdentifier
方法允许将数据从源视图控制器传递到目标视图控制器。
所以现在只需像这样调用 performSegueWithIdentifier
而不是 shouldPerformSegueWithIdentifier
。
performSegueWithIdentifier("PokemonDetailVC", sender: poke)
在Swift3.0
self.performSegue(withIdentifier: "PokemonDetailVC", sender: poke)