У меня есть 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
}