快速基础知识中的个性测验指导应用程序
Posted
技术标签:
【中文标题】快速基础知识中的个性测验指导应用程序【英文标题】:PersonalityQuiz guided app in swift fundamentals 【发布时间】:2021-02-05 19:08:33 【问题描述】:我遇到了一些额外的挑战。我需要通过某个属性过滤一个 Question 类型的数组,然后通过 segue 将其传递给下一个 View Controller。我已经这样做了:
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
guard let sender = sender as? UIButton else return
if sender == quiz3Button
let vc = segue.destination as? QuestionViewController
vc?.correctQuestions = questions.filter question in
return question.quiz == .animals
else if sender == quiz4Button
let vc = segue.destination as? QuestionViewController
vc?.correctQuestions = questions.filter question in
return question.quiz == .cars
@IBAction func quiz3ButtonTapped(_ sender: UIButton)
performSegue(withIdentifier: "animals", sender: sender)
@IBAction func quiz4Button(_ sender: UIButton)
performSegue(withIdentifier: "cars", sender: sender)
过滤有效,但不会将值传递给下一个视图控制器。我像这样在 QuestionViewControler 中声明了变量
var correctQuestions: [Question] = []
但是当我需要访问它时,我收到错误“索引超出范围”。所以我认为它是空的..
从按钮到 VC 的 Segues
【问题讨论】:
在prepare(for:sender:)
函数的开头设置断点,然后单步执行。有很多事情可能会出错,以防止将值传递到目的地。如果不运行您的应用,我们无法判断发生了什么。
是的,没有。我无法从我的工作机器上下载它,我建议你做一些事情来调试你的应用程序。
好的,我已经尝试过了。我在 2 个 VC 之间有一个导航控制器。我删除了它,它工作得很好。但我需要介于两者之间的导航控制器。那么关于如何使它工作的任何想法?
【参考方案1】:
好的。我懂了。 NavigationController 是这里的问题。通过NC添加到功能推送中并且它起作用了;)我认为如此关闭
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
guard let sender = sender as? UIButton else return
if sender == quiz3Button
let destinationViewController = segue.destination as? UINavigationController
let questionViewController = destinationViewController?.viewControllers.first as! QuestionViewController
questionViewController.correctQuestions = questions.filter questions in
return questions.quiz == .animals
else if sender == quiz4Button
let destinationViewController = segue.destination as? UINavigationController
let questionViewController = destinationViewController?.viewControllers.first as! QuestionViewController
questionViewController.correctQuestions = questions.filter questions in
return questions.quiz == .cars
【讨论】:
您的按钮 segue 调用导航控制器内部的视图控制器?您没有提供足够的信息让您的读者知道这一点。 当您寻求帮助解决问题时,提供大量上下文是值得的。以上是关于快速基础知识中的个性测验指导应用程序的主要内容,如果未能解决你的问题,请参考以下文章