2017-08-31 42 views
0

我的問題是,我怎樣才能使它redDotwCircle可以從第二個viewController訪問,使他們可以隱藏或不隱藏。他們沒有直接連接,但你可以通過不同的viewControllers獲得他們。使UIImageView可訪問所有viewControllers

第一的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

嗯你的問題是不是真的完成!第一個和第二個視圖控制器之間的關係是什麼?你在使用segue嗎?你是從故事板介紹它嗎?他們甚至連接到對方? – 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。頂部是第三個viewController – Tabj

+0

嗯我從來沒有在這種情況下,但你可以做的是初始化你的標籤在第三個VC,然後傳遞參考底部的VC。 – Siyavash

0

可以通過添加新的部件到第二個和第三個視圖控制器實現這一點,此部件是閉合:

var updateFirstViewControllerImageViews: (() -> Void)? 

然後覆蓋爲firstViewController的SEGUE方法制備,並設置updateFirstViewControllerImageViews每個這樣你的第二個和第三個視圖控制器:現在

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

,在你的第二個和第三個視圖控制器,你可以使用封w ^無論你想這樣:

self.updateFirstViewControllerImageViews?()