2017-06-08 11 views
0

勉強した後、研究とアウトソーシングで私の問題を理解することができませんでした:(私は現在、値を渡しながらビューを見るためにセグに慣れようとしています。画像を渡して表示する

マイアプリは、このようなビュー負荷と一つアクションbuttonthatがセグエプリフォーム機能を使用して、次のビューにビューセグエをトリガするとき、ランダムに画像を吐き出す一方の画像アレイ付き...最初のページである。

第2のページは、元のビュー画像アレイからのランダムに渡された画像に依存して変化しなければならない解消ボタンおよび画像ビューを含む。

ランダムに渡された画像が見えないことを除いて、すべて正常に動作します。以下は

私のコードです:私はseguesでsenderパラメータを使用する方法はありません

ページ1

import UIKit 

class MainWelcomVC: UIViewController { 



var ImageArr = [UIImageView]() 

@IBOutlet weak var BackGround: UIImageView! 



override func viewDidLoad() { 
    super.viewDidLoad() 

    for x in 0...2 { 

     let image = UIImage(named: "char\(x).png") 
     let imageview = (UIImageView(image: image)) 
     ImageArr.append(imageview) 

    } 


} 

@IBAction func PlayButtonPressed(_ sender: Any) { 

    let randomIndex = Int(arc4random_uniform(UInt32(ImageArr.count))) 
    let CharImage = ImageArr[randomIndex] 

    performSegue(withIdentifier: "CharDisplayVC", sender: CharImage) 

} 



override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 

    if let destination = segue.destination as? CharDisplayVC{ 

     if let ImageFinal = sender as? UIImage { 
      destination.ImageToDisplay = ImageFinal 
     } 
} 


} 
} 

PAGE2

import UIKit 

class CharDisplayVC: UIViewController { 

private var _ImageToDisplay: UIImage! 

var ImageToDisplay: UIImage { 

    get { 

     return _ImageToDisplay 

    } set { 

     _ImageToDisplay = newValue 
    } 

} 


@IBOutlet weak var CharPicture: UIImageView! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    CharPicture.image = _ImageToDisplay 


} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

@IBAction func PlayAgainBtnPressed(_ sender: Any) { 

    dismiss(animated: true, completion: nil) 
} 



} 

答えて

0

だから最終的には浮気後の溶液を発見し、それは、配列を含むすべてUIimageオブジェクトを作ることだった1ページのための新しいコードです:

import UIKit 

class MainWelcomVC: UIViewController { 

var ImageArr = [UIImage]() 
var CharImage: UIImage? 

@IBOutlet weak var BackGround: UIImageView! 


override func viewDidLoad() { 
    super.viewDidLoad() 

    for x in 0...2 { 

     let image = UIImage(named: "char\(x).png") 
     ImageArr.append(image!) 
    } 
} 




@IBAction func PlayButtonPressed(_ sender: Any) { 

    let randomIndex = Int(arc4random_uniform(UInt32(ImageArr.count))) 
    self.CharImage = ImageArr[randomIndex] 

    performSegue(withIdentifier: "CharDisplayVC", sender: self) 
} 



override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 

    if let destination = segue.destination as? CharDisplayVC { 

     if let ImageFinal = self.CharImage as? UIImage! { 
      destination.ImageToDisplay = ImageFinal 
     } 
    } 
    } 
} 

私はまだ黄色の警告を持っています"UIImageからの条件付きキャスト?" 「UIImage!」いつも成功している "と、"パターンマッチは「UIImage!

if let ImageFinal = self.CharImage as? UIImage! { 

    } 
0

。 UIViewControllerがperformSegue呼び出しを行っているので、私は通常selfを呼び出します。以下のようなものが動作するはずです。以下、

import UIKit 

class MainWelcomVC: UIViewController { 

    var ImageArr = [UIImageView]() 
    var CharImage: UIImage? 

    @IBOutlet weak var BackGround: UIImageView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     for x in 0...2 { 

      let image = UIImage(named: "char\(x).png") 
      let imageview = (UIImageView(image: image)) 
      ImageArr.append(imageview) 
     } 
    } 

    @IBAction func PlayButtonPressed(_ sender: Any) { 

     let randomIndex = Int(arc4random_uniform(UInt32(ImageArr.count))) 
     self.CharImage = ImageArr[randomIndex].image 

     performSegue(withIdentifier: "CharDisplayVC", sender: self) 
    } 



    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 

     if let destination = segue.destination as? CharDisplayVC { 

      if let ImageFinal = self.CharImage as? UIImage { 
       destination.ImageToDisplay = ImageFinal 
      } 
     } 
    } 
} 
+0

それでも私にImageFinal = CharImageとして許可すれば CharImage = ImageArr [randomIndex] と にUIImageビューにUIImageを割り当てることはできませんの問題を与える: 'UIImage !?'」以下のコードでは、へ? UIImage –

+0

'self.CharImage = ImageArr [randomIndex]'を 'self.CharImage = ImageArr [randomIndex] .image'に更新しました。私の謝罪はそれを逃した。今はうまくいくはずです。 –

+0

yes thanxこれもうまくいったけど、配列や他の行を変更することで動作するようにしました。あなたは私の答えのコードをチェックし、それが良い方法であるかどうか教えていただけますか?また、私はUIイメージビューとUIimage –

関連する問題