質問: CGPoint(x:screenWidth/2, y:screenHeight/2) // UIImageViewのインスタンスをビューに追加 self.view.addSubview(imageView) } } ```
回答: グローバルに変数を宣言しなくても、遷移先の`ViewController`の変数としてセットして、その変数から画像を取得することでやりたいことができると思います。(コード参照) --- 質問の回答 --- > > 一、ドット技法を使って正確にグローバル変数にアクセスしてグローバル変数で受け取れるはず?の値にアクセスできているのか > > > できると思います。 > > 二、そもそも、push内で画像を定義して飛ばしているが、その方法は正しいのか > > > 遷移先の変数に値を設定することは普通に行う事です。 > > 三、pushで画像を飛ばしているが、飛橋た画像はグロバール変数に入っているのか > > > 入ります。 > > 四、IBActionで画像を入れるだけでは、segue.swiftの方のグローバル変数var image1:UIImage?に画像はセットされないのではないか? > > > グローバル変数なのでセットされます。 > > ロジックのおかしなところがあればご指摘ください。 > > > コードを参照 > > コードの書き方におかしなところがあればご指摘ください > > > 以下のコーディング規約等を参考にするのも良いと思います。 【Swift】コーディング規約まとめ ・遷移先のクラスの名前が`segue`で`UIViewController`という事が分かりにくい。 ・クラス名は大文字から始める。 ・遷移先で生成されている`imageView`のサイズが指定されていません。(配置の位置は画面の中央になっていますが) ``` // ----- ViewController ----- import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() } @IBAction func segue(sender: AnyObject) { if let nextVC = storyboard?.instantiateViewControllerWithIdentifier("Next") as? NextViewController { nextVC.image1 = UIImage(named:"img.jpg")! navigationController?.pushViewController(nextVC, animated: true) } } } // ----- NextViewController ----- import UIKit class NextViewController: UIViewController { var image1:UIImage! override func viewDidLoad() { super.viewDidLoad() initImageView() } func initImageView(){ // UIImageView 初期化 let imageView = UIImageView(image:image1) // 画面の横幅を取得 let screenWidth:CGFloat = view.frame.size.width let screenHeight:CGFloat = view.frame.size.height // 画像の中心を画面の中心に設定 imageView.center = CGPoint(x:screenWidth/2, y:screenHeight/2) // UIImageViewのインスタンスをビューに追加 view.addSubview(imageView) } } ```