gpt4 book ai didi

Swift:调用时出现 Segue 错误

转载 作者:行者123 更新时间:2023-11-30 10:21:28 26 4
gpt4 key购买 nike

我在名为 ViewController 的 swift 类中有一个 segue 设置,并且我从 tableView didSelectRowAtIndexPath 进行调用。我在我的 segue 中使用此代码

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

var svc = segue!.destinationViewController as Homework;

svc.subject = subject_name

}

告诉它设置一个名为 subject 的变量,其声明如下 var subject:NSString!到一个名为 subject_name 的变量。然后我使用此代码 prepareForSegue(UIStoryboardSegue(), sender: AnyObject?()) 从我的 tableView didSelectRowAtIndexPath 调用它.

这是我的 didSelectRowAtIndex

     func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
println("You selected cell #\(indexPath.row)!")
let indexPath = tableView.indexPathForSelectedRow();
var currentCell = tableView.cellForRowAtIndexPath(indexPath) as UITableViewCell
println(currentCell.textLabel!.text)
subject_name = currentCell.textLabel.text
// // Showing new storyboard
performSegueWithIdentifier("Homework", sender: self)
let vc : AnyObject! = self.storyboard.instantiateViewControllerWithIdentifier("Homework")
self.showViewController(vc as UIViewController, sender: vc)
}

但是当我运行应用程序并单击表格 View 单元格时,我收到此错误“ fatal error :在展开可选值时意外发现 nil”,并且绿色箭头指向 var svc = segue!.destinationViewController as Homework; 。我在另一个应用程序上测试了完全相同的代码,期望在单击按钮时调用 segue 并且工作完美,我还尝试了 Calling segue programatically not working 的答案,和Preparing for segue in embedded tableView in Swift 。这两个答案都不起作用。

最佳答案

如果我理解正确的话,您正在调用prepareForSegue()。您不应该这样做,这是自动调用的。

您应该做的是调用performSegueWithIdentifier(identifier: String, sender: AnyObject?)。这会触发 segue 调用,该调用会自动执行 prepareForSegue()

identifier 参数是您从 IB 设置的参数:选择 segue 并查看属性检查器。

除此之外,@AnthonyKong 的答案是一种更安全的处理可选值的方法(在本例中是一个 segue)——确保不会抛出运行时异常。

附录查看您更新的问题,特别是 didSelectRowAtIndexPath 的实现。最后两行:

let vc : AnyObject! = self.storyboard.instantiateViewControllerWithIdentifier("Homework")
self.showViewController(vc as UIViewController, sender: vc)

是多余的 - 如果您执行 segue,这将实例化目标 View Controller ,因此您不必手动执行此操作。删除这些行。

关于Swift:调用时出现 Segue 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26347580/

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