Ios 如何在if-else语句中插入覆盖函数
我意识到,使用基本逻辑,我无法将覆盖函数放入if-else语句中,因为它将覆盖所有内容。然而,我仍然需要在if-else语句中加入segue的准备。因此,我正在处理的代码的工作方式是,如果用户两次点击一个按钮,他们就赢得了游戏,然后转到winners view controller,在那里显示分数。如果他们输了,他们会去一个没有分数的视图控制器。因此,如果计数器<9.9&&level==2,我需要将覆盖函数segue放在Ios 如何在if-else语句中插入覆盖函数,ios,swift,swift3,overriding,segue,Ios,Swift,Swift3,Overriding,Segue,我意识到,使用基本逻辑,我无法将覆盖函数放入if-else语句中,因为它将覆盖所有内容。然而,我仍然需要在if-else语句中加入segue的准备。因此,我正在处理的代码的工作方式是,如果用户两次点击一个按钮,他们就赢得了游戏,然后转到winners view controller,在那里显示分数。如果他们输了,他们会去一个没有分数的视图控制器。因此,如果计数器10&&level
updateTimer()
的部分
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
}
}
override func prepare(对于segue:UIStoryboardSegue,发送方:Any?){
让DestViewController:winViewController=segue.destination为!winViewController
DestViewController.LebelText=labelx.text!
}
func updateTimer(){
计数器+=0.1
labelx.text=字符串(格式:“%.1f”,计数器)
如果计数器>10&&level<2{
让next=self.storyboard?.instanceeviewController(标识符为“loseViewController”)作为?loseViewController
self.present(下一步),动画:true,完成:nil)
}如果计数器<9.9&&level==2,则为else{
让nextc=self.storyboard?.instanceeviewcontroller(标识符为:“winViewController”)作为?winViewController
self.present(nextc!,动画:true,完成:nil)
}否则{
回来
}
}
根据Jon的上述评论,您甚至不应该调用present(UIViewController:)
-它甚至不会调用prepare(for segue:)
方法。听起来您试图做的是在特定时间检查一个条件,并基于该条件,传递一些数据以显示在目标视图控制器中
如果要使用segue,最好设置segue标识符:
首先,您需要创建segue。将鼠标悬停在情节提要中VC顶部的view controller图标上,然后按住control并拖动到目标VC:
然后选择segue的类型
之后,您需要为segue设置唯一标识符,以便可以区分代码中的任何其他segue。为此,请选择segue本身,然后转到inspector窗格,并在“Identifier”字段中键入唯一名称:
在完成了所需的两个序列之后,您可以将代码编辑为如下内容:
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)
}
}
我真的不明白你在问什么,但我认为你要做的是在情节提要中定义分段,然后在if语句的两个分支中,调用performsguewithidentifier(sender:)
而不是实例化..
和呈现..
。
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
}
}