- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我意识到,使用基本逻辑,我无法将覆盖函数放入 if else 语句中,因为它会覆盖所有内容。但是我仍然需要放入 if else 语句来为 segue 做准备。因此,我正在工作的代码的工作方式是,如果用户点击按钮两次,他们就赢得了游戏,因此转到显示分数的获胜者 View Controller 。如果他们输了,他们就会进入没有得分的 View Controller 。所以我需要将覆盖函数segue放在updateTimer()
中,在 else if counter < 9.9 && level == 2
部分。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let DestViewController : winViewController = segue.destination as! winViewController
DestViewController.LebelText = labelx.text!
}
func updateTimer() {
counter += 0.1
labelx.text = String(format: "%.1f", counter)
if counter > 10 && level < 2 {
let next = self.storyboard?.instantiateViewController(withIdentifier: "loseViewController") as? loseViewController
self.present(next!, animated: true, completion: nil)
} else if counter < 9.9 && level == 2 {
let nextc = self.storyboard?.instantiateViewController(withIdentifier: "winViewController") as? winViewController
self.present(nextc!, animated: true, completion: nil)
} else {
return
}
}
最佳答案
为了构建 Jon 上面的评论,您甚至不应该调用 present(UIViewController:)
- 它甚至不会调用 prepare(for segue:)
方法。听起来您想要做的是在特定时间检查条件,并根据该条件传递一些数据以呈现在目标 View Controller 中。
如果你想使用segues,最好的办法是设置一个segue标识符:
首先,您需要创建 Segue。将鼠标悬停在 Storyboard 中 VC 顶部的 View Controller 图标上,然后按住 Control 并拖动到目标 VC:
然后选择segue类型
之后,您需要为 Segue 设置唯一标识符,以便可以区分代码中的任何其他 Segue。为此,请选择 Segue 本身,然后转到检查器 Pane 并在“标识符”字段中输入唯一名称:
为您想要的两个 Segue 完成此操作后,您可以将代码编辑为如下所示:
func updateTimer() {
counter += 0.1
labelx.text = String(format: "%.1f", counter)
if counter > 10 && level < 2 {
// Use first unique segue identifier
self.performSegue(withIdentifier: "identityA", sender: self)
} else if counter < 9.9 && level == 2 {
// Use second unique identifier
self.performSegue(withIdentifier: "identityB", sender: self)
}
}
现在您可以在 prepare(for segue:)
中添加特殊代码,并且您可以使用在 Interface Builder 中指定的唯一标识符来区分并为不同的目标 VC 添加特殊代码
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "identityA" {
let destinationA: winViewController = segue.destination as! winViewController
destinationA.LebelText = labelx.text
} else if segue.identifier == "identityB" {
let destinationB: loseViewController = segue.destination as! loseViewController
destinationB.LebelText = labelx.text
}
}
关于ios - 如何将覆盖函数插入 if else 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41538865/
我是一名优秀的程序员,十分优秀!