我有 2 个视图控制器。
1.视图控制器(VC)
2.WebViewController(WVC)
在 VC 中,我单击一个按钮,然后显示 WVC。
成功完成WVC中的所有任务后,我想显示VC并在VC中执行特定功能。
现在,Storyboard 包含一些对象,并通过单击和拖动将其添加到 VC。
最初,它有一些值(不是零)。
我点击按钮,WVC被推送,完成WVC中的所有任务后,
VC被推了。
现在VC中有些值是nil。
错误,欢迎(UILabel
, UIView
) 为零...
还有就是想调用VC中的函数。
怎么可能。?
Code
ViewController.swift
class LoginController:UIViewController,UITextFieldDelegate{
@IBOutlet weak var password: UITextField!
@IBOutlet weak var username: UITextField!
@IBOutlet weak var error: UILabel!
@IBOutlet weak var welocome: UILabel!
......
@IBAction func BtnClicked(sender: AnyObject) {
let webViewCnt = self.storyboard!.instantiateViewControllerWithIdentifier("WebViewController") as UIViewController
self.navigationController?.pushViewController(webViewCnt, animated: true)
}
func doSomeProcess(){
}
}
WebViewController.swift
class WebViewController: UIViewController, UITextFieldDelegate,UIWebViewDelegate {
override func viewDidLoad() {
super.viewDidLoad()
webView.delegate = self
self.start()
}
func start(){
---- do some process ----
dispatch_async(dispatch_get_main_queue(), { () -> Void in
let ViewCont = self.storyboard!.instantiateViewControllerWithIdentifier("LoginController") as UIViewController
self.navigationController?.pushViewController(ViewCont, animated: true)
ViewController().doSomeProcess() // call viewcontroller doSomeProcess() function
}
})
}
}
很简单,你正在将 VC 推向 WVC,
从逻辑上讲,将 WVC 推送到 NavigationController 后。
它将 WVC 添加到导航堆栈的顶部。
最好从导航中弹出此 WVC,它将自动显示具有先前值的 VC。
用这个
ViewController.swift
class LoginController:UIViewController,UITextFieldDelegate{
@IBOutlet weak var password: UITextField!
@IBOutlet weak var username: UITextField!
@IBOutlet weak var error: UILabel!
@IBOutlet weak var welocome: UILabel!
var isBackFromWVC = false
......
@IBAction func BtnClicked(sender: AnyObject) {
let webViewCnt = self.storyboard!.instantiateViewControllerWithIdentifier("WebViewController") as UIViewController
self.navigationController?.pushViewController(webViewCnt, animated: true)
isBackFromWVC = true
}
func doSomeProcess(){
}
func vieWillAppear(){
if(isBackFromWVC){
doSomeProcess()
}
}
}
WebViewController.swift
class WebViewController: UIViewController, UITextFieldDelegate,UIWebViewDelegate {
override func viewDidLoad() {
super.viewDidLoad()
webView.delegate = self
self.start()
}
func start(){
---- do some process ----
dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.navigationController?.popViewController(animated:true)
}
})
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)