Моя работа - 1. Передача данных из первого контроллера представления -> второго контроллера представления с помощью pushViewController: Success
2. Передача данных из второго контроллера представления -> Первый контроллер представления с использованием popViewController: Success // используется делегат протокол для возврата данных
3. Передача данных из контроллера третьего вида -> Контроллер первого вида: Ошибка
Код: ViewController.swift
import UIKit
class ViewController: UIViewController,secondViewDelegate,thirddelegate {
@IBOutlet var Firstoutput: UILabel!
@IBOutlet var inputField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
}
func popdata(value: String) { //second view controller delegate protocol defintions
Firstoutput.text = "\(value)"
}
func thirdView(datas:String) //third view controller delegate protocol definition
{
print(datas)
}
@IBAction func pushBtn(_ sender: Any) { //first view button action
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vcFirst = storyboard.instantiateViewController(withIdentifier: "second") as! SecondViewController //secondview
vcFirst.Secondtext = inputField.text
vcFirst.delegate = self //second view delegate intiate
let vcThird = storyboard.instantiateViewController(withIdentifier: "third") as! ThirdViewController //third view
vcThird.thirddelegate = self //third view delegate intiate
navigationController?.pushViewController(vcFirst, animated: true)
}
}
SecondViewController.swift
import UIKit
//protocol for passing data when pop
protocol secondViewDelegate {
func popdata(value:String)
}
class SecondViewController: UIViewController {
@IBOutlet var secondOutputField: UILabel!
@IBOutlet var secondInputField: UITextField!
var Secondtext:String!
var delegate:secondViewDelegate!
override func viewDidLoad() {
super.viewDidLoad()
secondOutputField.text = Secondtext
}
//popping back to first view controller using data
@IBAction func popBtn(_ sender: Any) {
if delegate?.popdata != nil
{
delegate.popdata(value: secondInputField.text!)
}
navigationController?.popViewController(animated: true)
}
//pushing to third view controller
@IBAction func thirdPageBtn(_ sender: Any) {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vcThird = storyboard.instantiateViewController(withIdentifier: "third") as! ThirdViewController
navigationController?.pushViewController(vcThird, animated: true)
}
}
ThirdViewController.swift
import UIKit
protocol thirdviewDelegate //delegate to pass data from thirs view to first view
{
func thirdView(datas:String)
}
class ThirdViewController: UIViewController {
var thirddelegate:thirdviewDelegate!
@IBOutlet var thirdTextField: UITextField!
override func viewDidLoad() {
super.viewDidLoad
}
@IBAction func thirdViewInvoke(_ sender: Any) {
if thirddelegate?.thirdView != nil
{
thirddelegate.thirdView(datas: thirdTextField.text!)
}
}
}
Снимок экрана OutPut:
![Pass data from Third to First view Controller but its not passing value](https://i.stack.imgur.com/R6lRS.png)
Не работает только передача данных с контроллера третьего вида на первый, помогите мне решить эту проблему ... Спасибо