我有一个动态tableView,一个tableViewCell中的动态collectionView。
在每个collectionViewCell中,都有一个按钮,它应该是segue的触发器。
我尝试使用以下代码,但应用程序崩溃:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Receiver (<Okm.bienController: 0x7fc8b0cfb1a0>) has no segue with identifier 'extend''
我的storyBoard中的segue标识符是'extend'。
class photoCell: UITableViewCell, UICollectionViewDelegateFlowLayout, UICollectionViewDelegate, UICollectionViewDataSource {
...
func extendFunc(sender : UIButton) {
bienController().performSegueWithIdentifier("extend", sender: sender.tag)
}
}
class bienController : UIViewController, UITableViewDelegate, UITableViewDataSource {
...
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "extend" {
let backItem = UIBarButtonItem()
backItem.title = ""
navigationItem.backBarButtonItem = backItem
let extendView = segue.destinationViewController as! extendController
extendView.image = image[sender]
}
}
}
你知道我怎么做吗?
谢谢!!!
修改
术语bienController().performSegueWithIdentifier(...)
是否正确?我可以从UICollectionCell调用我的Controller函数吗?
修改
我试过了:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
if tableView == self.tableViewTwo {
self.segue()
// self.performSegueWithIdentifier("image", sender: nil)
}
}
func clickExtend(sender:Int){
print(sender) //print the correct tag!
self.segue()
}
func segue(){
self.performSegueWithIdentifier("image", sender: nil)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "image" {
let backItem = UIBarButtonItem()
backItem.title = ""
navigationItem.backBarButtonItem = backItem
// print(sender)
let extendView = segue.destinationViewController as! extendController
extendView.image = UIImage(named: "maison")
}
}
}
我将函数clickExtend()与我的collectionCell的按钮相关联。 当segse来自didSelectRowAtIndexPath时,segue工作,但是当我点击按钮时,它会崩溃并出现同样的错误:'由于未捕获的异常而终止应用'NSInvalidArgumentException',原因:'Receiver()没有带有标识符'image'的segue' “
我不明白..
(我更改了'image'的segue标识符)
答案 0 :(得分:1)
检查segue是否来自单元格或viewController。也许就是这样。
答案 1 :(得分:0)
看起来标识符未正确连接或未设置为“extend”,因为错误消息显示(没有标识符'extend'的segue)
答案 2 :(得分:0)
尝试更改bienController().performSegueWithIdentifier("name")
到
self.performSegueWithIdentifier("name")
答案 3 :(得分:0)
你必须使用代表。之前我遇到过这个问题,我使用协议和委托解决它并执行带标识符的segue。