注:質問は私の問題をより明確にする試みで編集されています。
ねえ、複数のVCSでデータを受け渡ししようとしています。私はV2 - > V3とV3 - > V1のデータ(配列)を渡したいと思いますが、V1 - V2 - V3とV3 - V2 - V1のようにVCだけをナビゲートできるようにします。 私が学ぶ必要があるのは、別のVCにナビゲートせずにデータを渡す方法と、V2 - > V3とV3 - > V1の間でデータを渡す2つの準備メソッドを設定しながら、すべてのVC間をナビゲートできることです。最初の準備を作成するとき、致命的なエラーを表示せずに、他のVCにナビゲートするためにVCに関連付けられた他のセグを使用できません。 誰でも助けてくれますか? すべての入力をいただければ幸いです!
HERESに私の試み:
if let firstController = segueMVH.destination as! FirstViewController {
// Set first view controller's data
} else if let secondController = segueMVH.destination as! SecondViewController {
// Set second view controller's data
} else if let thirdController = segueMVH.destination as! ThirdViewController {
// Set third view controller's data
}
注:あなたは、コントローラのセグエが行われようとしているどのビューをチェックする必要があり
import UIKit
class ViewController: UIViewController {
var name = String()
var StopButInfo = [String]()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
import UIKit
class SecondViewController: UIViewController {
var StringArray = [String]()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
@IBOutlet var PHeight: UITextField!
@IBOutlet var PName: UITextField!
@IBAction func Search(_ sender: Any) {
if PHeight.text != ""{
performSegue(withIdentifier: "SearchSegue", sender: self)}
let CDstart = String(describing: Date())
StringArray.append(CDstart)
StringArray.append(PName.text!)
StringArray.append(PHeight.text!)
}
override func prepare(for SearchSegue: UIStoryboardSegue, sender: Any?){
let thirdController = SearchSegue.destination as! ThirdViewController
thirdController.SearchButInfo = StringArray
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
import UIKit
class ThirdViewController: UIViewController {
var height = String()
var SearchButInfo = [String]()
var StringArray = [String]()
@IBAction func Stop(_ sender: Any) {
if StringArray.count != 0{
performSegue(withIdentifier: "SegueToStart", sender: self)
}
let CDStop = String(describing: Date())
StringArray.append(CDStop)
StringArray.append(height)
}
override func prepare(for SegueToStart: UIStoryboardSegue, sender: Any?){
let firstController = SegueToStart.destination as! ViewController
firstController.StopButInfo = StringArray}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
どのようなエラーが発生していますか、どのコード行にありますか?壊れたコード行を投稿できますか?また、エラーメッセージ –
スレッド1:信号 'SIGABRT 'を' let secondController = segueMVH.destination as line! ThirdViewController'エラーメッセージ "HC.ViewController '(0x107b33ec0)の型を' HC.ThirdViewController '(0x107b33f48)にキャストできませんでした。 –