从另一个vc访问viewcontroller时,运行方法被关闭

时间:2018-07-11 05:15:31

标签: swift segue viewcontroller viewdidload

假设我有一个初始的VC2,然后是另一个VC2。 VC1与VC2有联系,在VC2上有一个按钮,可退出VC2,然后显示VC1。 VC1加载后,我想运行一个方法,但是鉴于加载后我无法执行该操作,那么在哪里可以做到呢?

[VC1]-> [VC2]

3 个答案:

答案 0 :(得分:1)

您也可以尝试使用final ProgressBar progressBar = findViewById(R.id.pb); Drawable progressDrawable = progressBar.getIndeterminateDrawable(); if (progressDrawable != null && progressBar.getProgress() < 90) { final Drawable mutateDrawable = progressDrawable.mutate(); DrawableCompat.setTint(mutateDrawable, Color.RED); progressBar.setProgressDrawable(mutateDrawable); } else { final Drawable mutateDrawable = progressDrawable.mutate(); DrawableCompat.setTint(mutateDrawable, Color.GREEN); progressBar.setProgressDrawable(mutateDrawable); } 关闭VC2并在VC1中调用方法。这非常容易,并且需要更少的编码。

在您的VC1中添加以下方法:

Unwind Segue

@IBAction func unwindToVC1(segue:UIStoryboardSegue){ print("Hello") } 中,右键单击VC1的storyboard,然后将segue连接到VC2:

enter image description here

然后在VC2中的Exit icon中选择storyboard并将其命名为:

enter image description here

现在在您要关闭VC2的方法中,只需添加:

unwindSegue

您还可以将数据从VC2传递到VC1。

答案 1 :(得分:0)

您可以使用委托方法来实现。在您调用以关闭VC2的方法中,调用委托。您可以在VC1中实现此委托。

答案 2 :(得分:0)

在VC1中: 类或扩展中的VC2和VC1 Controller的委托

将委托方法添加到VC1中,该方法将在关闭VC2之后调用

在VC2中: 添加VC1的协议,并创建协议委托的对象,然后将其退出,转到VC1委托方法。

示例:

VC1:

extension VC1, myCustomVC2Delegate {
    func didCloseDelegate() {
        // Your function or method Called here
    }
}

VC2:

protocol myCustomVC2Delegate {
    func didCloseDelegate()
}
import UIKit

class VC2: UIViewController {

    var delegate: myCustomVC2Delegate?

    @IBAction func onTapGotoVC1(_ sender: AnyObject) {
        self.performSegue(withIdentifier: "gotoVC1", sender: self)
    }


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

        if segue.identifier == "gotoVC1" {
           if self.delegate != nil {
            self.delegate?.didCloseDelegate()
        }
     } 
}