2017-08-31 47 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?()