我正在制作App,以通过Scene kit查看3D模型。
雨燕4.0
Xcode 10.1
我要转移图像。我在SCNViewController中创建了一个图像(使用SCN View),然后将其移至ViewController。 我想在转移图像时区分大小写。 我认为使用Segue更好。
数组
我在AppDelegate中使用数组。因为我想在ViewController中添加和添加图像。当我移到其他ViewController时,我不希望擦除图像。
当我像下面这样写时,它会崩溃。我使用func viewWillAppear。
ViewController
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if appDelegate.isNewSCNStampAdded == true{
let scnstamp = appDelegate.scnstampArray.last!
func returnToTop(segue: UIStoryboardSegue) {
if segue.identifier == "backtoFirstcoma" {
mainImageView.image = scnstamp
mainImageView.contentMode = UIView.ContentMode.scaleAspectFit
print("1")
}else if segue.identifier == "backtoSecondcoma" {
print("2")
}else if segue.identifier == "backtoThirdcoma" {
print("3")
}else {
print("others")
}
}
appDelegate.isNewSCNStampAdded = false
}
}
(第二个想法)
我尝试了另一种方式。我做了一个“除法”来区分。但是这种方式也是行不通的。在viewWillAppear的计时中,我无法捕捉到“ dividegoes”的信息。
ViewController
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if appDelegate.isNewSCNStampAdded == true{
let scnstamp = appDelegate.scnstampArray.last!
switch dividegoes {
case "goone" :
mainImageView.image = scnstamp
print("1")
case "gotwo" :
secondImageView.image = scnstamp
print("2")
case "gothree" :
thirdImageView.image = scnstamp
print("3")
default:
print("Others")
}
}
appDelegate.isNewSCNStampAdded = false
}
}
SCNViewController
let dividegoes = "gozero"
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
switch segue.identifier {
case "backtoFirstcoma" :
let whiteVc = segue.destination as! ViewController
whiteVc.dividegoes = "goone"
print("go1")
case "backtoSecondcoma" :
let blueVc = segue.destination as! ViewController
blueVc.dividegoes = "gotwo"
print("go2")
case "backtoThirdcoma" :
let greenVc = segue.destination as! ViewController
greenVc.dividegoes = "gothree"
print("go3")
default:
print(“Others")
}
}
在这种情况下,如何区分大小写。
如果我删除“ if-else”结构,则说明该结构成功运行。但是我需要以3种方式进行划分。
错误消息
其视图不在窗口层次结构中!
我无法在viewWillAppear中使用Segue ...? 也许我需要使用其他方式来区分大小写...
答案 0 :(得分:0)
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
您应该考虑使用此功能,而不要使用viewWillAppear
伴侣。