假设我有一个初始的VC2,然后是另一个VC2。 VC1与VC2有联系,在VC2上有一个按钮,可退出VC2,然后显示VC1。 VC1加载后,我想运行一个方法,但是鉴于加载后我无法执行该操作,那么在哪里可以做到呢?
[VC1]-> [VC2]
答案 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:
然后在VC2中的Exit icon
中选择storyboard
并将其命名为:
现在在您要关闭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()
}
}
}