gpt4 book ai didi

ios - prepareForSegue 崩溃应用程序

转载 作者:搜寻专家 更新时间:2023-11-01 07:33:41 25 4
gpt4 key购买 nike

所以我的 segue 在这里崩溃了,我不确定为什么......没有显示任何错误但是当我在模拟器中运行应用程序然后点击按钮进行 segue 它崩溃并在调试器中出现此错误:无法将类型“DNAapp.StoriesTableViewController”(0x1077d5a80)的值转换为“UITableViewCell”(0x109d8ca18)。(lldb)

相关代码如下:

class StoriesTableViewController: UITableViewController, StoryTableViewCellDelegate {


override func viewDidLoad() {
super.viewDidLoad()


tableView.estimatedRowHeight = 100
tableView.rowHeight = UITableViewAutomaticDimension
}


override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return data.count

}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

let cell = tableView.dequeueReusableCellWithIdentifier("StoryCell") as! StoryTableViewCell

let story = data[indexPath.row]
cell.configureWithStory(story)
cell.delegate = self
return cell
}

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
performSegueWithIdentifier("WebSegue", sender: self)
tableView.deselectRowAtIndexPath(indexPath, animated: true)
}

// MARK: StoryTableViewCellDelegate

func storyTableViewCellDidTouchUpvote(cell: StoryTableViewCell, sender: AnyObject) {
// TODO: Implement Upvote
}

func storyTableViewCellDidTouchComment(cell: StoryTableViewCell, sender: AnyObject) {
performSegueWithIdentifier("CommentsSegue", sender: self)
}

//MARK: Misc
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "CommentsSegue" {
let toView = segue.destinationViewController as! CommentsTableViewController
let indexPath = tableView.indexPathForCell(sender as! UITableViewCell)!
toView.story = data[indexPath.row]
}
}

}

最佳答案

那是因为您的单元格不是 UITableViewCell,而是 StoryTableViewCell。如果您使用 if let 而不是您看到的强制包装,您的应用程序将不会崩溃,但是您将无法访问单元格中的值,您只需要正确地将单元格转换为下面:

class StoriesTableViewController: UITableViewController, StoryTableViewCellDelegate {

var myIndexPat = NSIndexPath()

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
myIndexPath = indexPath
performSegueWithIdentifier("WebSegue", sender: self)
tableView.deselectRowAtIndexPath(indexPath, animated: true)
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "CommentsSegue" {
let toView = segue.destinationViewController as! CommentsTableViewController
let indexPath = tableView.indexPathForCell(myIndexPath) as! StoryTableViewCell
toView.story = data[indexPath.row]
}
}

关于ios - prepareForSegue 崩溃应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31151237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com