我的问题如下,我有一个我正在处理的应用程序,其中包含两个视图。第一个按钮标有" Slide Show One"和" Slide Show Two"。
当我点击第一个按钮时,它显示第二个幻灯片的信息(由于我的最高新手),我选择通过布尔选择哪个幻灯片,如下所示:
var button : Bool = false;
然后:
@IBAction func slideShowOne() {
button = true;
}
@IBAction func slideShowTwo() {
print("clicked button 2");
button = false;
}
最后在prepareForSegue:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let passedPic = segue.destination as! ViewControllerTwo;
if(button == true) {
print(button);
passedPic.picsChosen = sLS1;
}
if(button == false) {
print(button);
passedPic.picsChosen = sLS2;
}
}
只有让它显示正确信息的方法是点击说按钮1进行btn1幻灯片放映,返回,然后再次点击按钮1。为什么这样,它与swift如何处理函数调用有什么关系?
除此之外:快速的知识现在总共为期一周。
编辑:让它工作,非常感谢。现在一个简单的问题,在这个时候我的两个IBActions是空的,但是由于它们附加了segue,因此它们是使它们有意义或者可能仍然能够发挥作用的最好方法;我假设prepare函数是绝对必须的,否则没有办法(我知道),将所需的数据发送到我的第二个VC。
@IBAction func slideShowOne() {
//self.performSegue(withIdentifier: "slideOne", sender: self);
}
@IBAction func slideShowTwo() {
//self.performSegue(withIdentifier: "slideTwo", sender: self);
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
{
let passedPic = segue.destination as! ViewControllerTwo;
if(segue.identifier == "slideOne") {
passedPic.picsChosen = sLS1;
} else {
passedPic.picsChosen = sLS2;
}
}
答案 0 :(得分:1)
尝试通过情节提示连接视图控制器到视图控制器 - 同样的ctrl拖动但整个视图控制器到其他。
给出该segue标识符 - >选择标识符并在第四个选项卡上给它识别。
之后在你的一个按钮中,例如:
order-by-date(){
ls -A1 | grep -E '( ... magic pattern here ... )' | while read -r line; do
YEAR="$(echo $line....)
MONTH="$(echo $line....)
DAY="$(echo $line....)
# ... and in a perfect world, get times IF they exist...
HOUR="$(echo $line....)
MINUTE="$(echo $line....)
SECOND="$(echo $line....)
done
}
你会有所期望的行为。
答案 1 :(得分:1)
原因是:override func prepare(for segue: UIStoryboardSegue, sender: Any?)
总是先执行。
所以实际的工作流程如下:
- > 1)初始化第一个视图
- > 2) var button = false
- > 3)用户点击btn1
- > 4)func prepare
被称为
- > 5)显示第二个视图(此时var button
仍为假,这就是您收到错误答案的原因)
- > 6)调用func slideShowOne()
(用户已在第二个视图中)
- > 7)由func slideShowOne()
引起的 var button = true (用户已在第二个视图中)
- > 8)用户返回
- > 9)用户再次点击btn1
- > 10)func prepare
被称为
- > 11)显示第二个视图(由于var button
的值已在步骤7中更改,用户得到正确答案)
如果您有任何其他问题,请与我们联系。玩得开心。 :)