【问题标题】:Exception when perform a segue执行 segue 时出现异常
【发布时间】:2016-03-31 04:45:04
【问题描述】:

我使用 Swift2 和 Xcode 7.1

我想在单击 tableViewCell 中存在的 collectionCell 时触发 segue。
只有我有一个标识符错误。

然而,我已经在我的故事板中说了我的好话。

错误:

由于未捕获的异常 'NSInvalidArgumentException' 导致应用程序终止,原因:'Receiver () has no segue with identifier 'look''

    class PostsCell: UITableViewCell, UICollectionViewDataSource, UICollectionViewDelegate {

    var controller: PostsController!

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }


    func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {

        controller.perform(data![indexPath.item])

    }

    // ...

}

我的控制器:

class PostsController: UITableViewController {

// ....

override func viewDidLoad() {
    super.viewDidLoad()

    // ...
}

// ...

func perform(post: Post) {
    self.post = post
    self.performSegueWithIdentifier("look", sender: self)
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    if (segue.identifier == "look") {
        let viewController:SeePostController = segue.destinationViewController as! SeePostController
        viewController.data = self.post
    }
}

}

【问题讨论】:

  • 是的,我也有同样的问题...
  • 我不能让我的行带有“self.performWithIdentifier()”。否则,我的代码无法编译...
  • 你在 PostCell 中有错误吗?从那里删除 self.performSegueWithIdentifier("look", sender: self) 并将其保存在 PostsController 中。
  • 在这种情况下我有一个标识符错误
  • 太好了,很高兴它对你有用。祝你好运:)

标签: ios xcode swift segue


【解决方案1】:

self.performSegueWithIdentifier("look", sender: self)代替PostsController().performSegueWithIdentifier("look", sender: self)

更新 创建一个新的视图控制器实例并调用您的 perform 方法。

var controller: PostsController!
controller.perform(data![indexPath.item])

【讨论】:

  • 我不能,因为我在 UITableViewCell 中
  • 是的,你可以试试@HugoFouquet
  • 我有'使用未解析的标识符'performSegueWithIdentifier''
  • 您使用的是 Swift 对吗?尝试清理您的项目并重新启动 Xcode。你确实用 self 调用 performSegueWithIdentifier。
  • 您能否在您的问题中添加更多代码,以便我可以尝试帮助您解决这个问题。
猜你喜欢
  • 1970-01-01
  • 2010-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-07
  • 2016-10-03
  • 2020-02-21
相关资源
最近更新 更多