Передача данных из функции делегата в новую раскадровку NavigationController UIViewController - PullRequest
0 голосов
/ 21 октября 2019

У меня есть ViewController (A), у которого есть «пейджер» scrollView, который загружает представления через перья. Я установил 'A', чтобы быть делегатом для функций щелчка кнопки в его прокручивающихся подпредставлениях "пейджера". Когда происходит действие кнопки UIView, она делегирует щелчок (отправку строки) обработке функции делегата. Функция делегата создает экземпляр другого viewcontroller в моем контроллере навигации. Это работает. Я хочу передать строку, переданную делегату, в новый загруженный viewcontroller. Когда я печатаю переменную или присваиваю метку ее значению, она пуста ... какие-нибудь идеи (я новичок)?

В UIViewController "A"

extension PagerViewController :  CustomViewProtocol {
func clockInTapped(cIDin: String){
print("clock in tapped \(cIDin)")  // prints the cIDin
let storyboard = UIStoryboard(name: "Main", bundle:nil)
let NFCScannerView = storyboard.instantiateViewController(withIdentifier: "NfcScanner")
let NFCScannerController = NfcViewController()
NFCScannerController.cIDin = cIDin // NFCScannerController knows cIDin member
self.navigationController?.pushViewController(NFCScannerView,animated:false)
}
}

В моем UIView "пейджер "subview:

protocol CustomViewProtocol : NSObjectProtocol{
func clockInTapped(cIDin: String)
}

и:

var cIDToPass: String?
@IBAction func ClockInButtonClickedNfc(_ sender:Any){
self.clockInTapped(cIDin: self.cIDToPass ?? "")
}
func clockInTapped(cIDin: String){
print("nfc button detected clicked \(cIDin)")  // prints the cID that was set
delegate?.clockInTapped(cIDin: cIDin)
}

IN UIViewController" NfcViewController "

var cIDin: String = ""
override func viewDidLoad(){
super.viewDidLoad()
print("client id received: \(self.cIDin)") // does not print the cID
}
...