2017-08-31 4 views
0

私はどうすればいいのですか?redDotwCircleは、2番目のviewControllerからアクセスできるため、隠されたり非表示になったりする可能性があります。それらは直接接続されていませんが、異なるviewControllerでそれらにアクセスできます。UIImageViewをすべてのviewControllerからアクセスできるようにする

まずViewControllerを

class SecondViewController: UIViewController 
{ 
    @IBOutlet weak var redDot: UIImageView! 

    @IBOutlet weak var wCircle: UIImageView! 
} 

第二のViewController

class ProgressViewController: UIViewController { 

    @IBOutlet weak var rDot: UIImageView!     

    override func viewDidLoad() { 
     super.viewDidLoad()   

     rDot.isUserInteractionEnabled = true 
     let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(rdotimageTapped(tapGestureRecognizer:))) 
     rDot.addGestureRecognizer(tapGestureRecognizer) 
     view.bringSubview(toFront: rDot)    
    }   

    func rdotimageTapped(tapGestureRecognizer: UITapGestureRecognizer) { 
     wcircle.isHidden = true 
     redDot.isHidden = false 
     view.layoutIfNeeded() 
     print("It worked") 
    } 

enter image description here

+0

うーん、あなたの質問は本当に完全ではありません!最初のビューコントローラと2番目のビューコントローラの関係は何ですか?あなたはセグーを使用していますか?あなたはストーリーボードからそれを提示していますか?彼らはお互いにつながっていますか? – Siyavash

+0

あなたの質問はまだ同じですが、私はあなたがsegueを使用したと思います。私の答えを見て、それが動作するかどうかを確認してください – Siyavash

答えて

0

イムではない、これは正しい方法ですが、私はどうなることは私の第二にUIImageViewの参照を持っているかどうかわからVCを作成し、それを最初のVCのimageViewに設定します。

したがって、これらの二つはあなたの「ProgressViewController」

var redDot: UIImageView? 
var wCircle: UIImageView? 

に追加してからごセグエの準備であなたの現在のUIImageViewを渡します。

let progressViewController = segue.destination as! ProgressViewController 
progressViewController.redDot = self.redDot 
progressViewController.redDot.wCircle = self.wCircle 
+0

私はあなたが意味するものを本当に理解していません、あなたのストーリーボードの画像をアップロードしてくださいできますか? – Siyavash

+0

私は画像で更新しました。左下がsecondViewController、右下がprogressViewControllerです。トップは3番目のviewControllerです – Tabj

+0

hmm私はこのような状況になったことはありませんが、3番目のVCでラベルを初期化してから、下位のVCに参照を渡すことができます。 – Siyavash

0

あなたはあなたの第二と第三のビューコントローラに新しいメンバーを追加することによって、このメンバーが閉鎖されることを達成することができます:

var updateFirstViewControllerImageViews: (() -> Void)? 

その後、あなたfirstViewControllerのセグエ方法の準備をオーバーライドし、updateFirstViewControllerImageViewsを設定このような2番目と3番目のビューコントローラのそれぞれに対して:

secondViewController.updateFirstViewControllerImageViews = { 
    // Update your image views here in the way you want! 
} 

さて、2番目と3番目のビューコントローラであなたはワットそのクロージャを使用することができますhereverあなたはこのようにしたい:

self.updateFirstViewControllerImageViews?()

関連する問題