我有一个MasterVC,其UIImageView的alpha值为0,按UIButton可以将alpha切换为1。按下相同的按钮将推动SecondaryVC在MasterVC上以“ Over Current Context”显示图像。

如果关闭了SecondaryVC,我想将MasterVC的UIImageView的alpha设置回0,但是很难找到如何仅使用dismiss返回MasterVC来调用函数的方法。

这是我的按钮,用于设置Alpha并推送至SecondaryVC。因为我听说过使用segue会导致内存问题,所以似乎无法使用它。

我尝试使用协议,但是在CGFloat上运行不佳。

@IBOutlet weak var background: UIImageView!
@IBOutlet weak var backgroundTable: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()
        background.image = lightBG
        backgroundTable.image = tableBG
        backgroundTable.alpha = 0
    }




@IBAction func unknownProperties(_ sender: UIButton) {
    UIView.animate(withDuration: 1.0, animations:{
        self.backgroundTable.alpha = 1
    })
    getOverlay()
}

最佳答案

使用NotificationCenter可能是这里的解决方案。

步骤1:在viewDidLoad处添加观察者

NotificationCenter.default.addObserver(
            self,
            selector: #selector(self.functionToExecute),
            name: NSNotification.Name.init("UpdateBackgroundTableAlpha"),
            object: nil
        )


步骤2:在关闭SecondaryVC之前发布通知。

NotificationCenter.default.post(name: NSNotification.Name.init("UpdateBackgroundTableAlpha"), object: nil)


步骤3:在MasterVC类范围内定义functionToExecute

func functionToExecute(){

   print("Make BackgroundTable Great Again!")
}

关于ios - 如何通过关闭推送的VC来执行MasterVC上的函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48535075/

10-13 03:54