Почему значение делегата не приходит в текстовое поле в Swift? - PullRequest
0 голосов
/ 01 апреля 2020

Я использую делегат для получения телефонного кода страны.

здесь я создал делегата:

public protocol CountryListDelegate: class {
func selectedCountry(country: Country)
}

public class CountryList: UIViewController, UITableViewDelegate, UITableViewDataSource, UISearchResultsUpdating {



   public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let cell = tableView.cellForRow(at: indexPath) as! CountryCell
    let country = cell.country!

    self.searchController?.isActive = false
    self.delegate?.selectedCountry(country: country)

    tableView.deselectRow(at: indexPath, animated: true)
    self.tableView.reloadData()
    self.dismiss(animated: true, completion: nil)
}
}

здесь я не получаю значение в поле countryCodeTextfield:

class ViewController: UIViewController, CountryListDelegate, UITextFieldDelegate {

@IBOutlet weak var countryCodeTextfield: UITextField!
@IBOutlet weak var counrtryCodeBtn: UIButton!
@IBOutlet weak var mobileNumTextfield: UITextField!

var countryList = CountryList()

     @IBAction func submitBtnAction(_ sender: UIButton) {
    print("in submit")

if sender.tag == 1 {
 if (mobileNumTextfield.text?.count)!<1 {
     Constants.showAlertView(alertViewTitle: "", Message: "Please Enter Mobile Number", on: self)
     return
 }
 self.loginService()
 } else {
 let navController = UINavigationController(rootViewController: countryList)
 self.present(navController, animated: true, completion: nil)
  }

 }
   func selectedCountry(country: Country) {
    print("in country")
    self.countryCodeTextfield.text="+\(country.phoneExtension)"
       print("\(country.flag!) \(country.name!), \(country.countryCode), \(country.phoneExtension)")
   }

выше табличного представления присутствует, но selectedCountry не вызывает также вывод на печать сообщения.

, пожалуйста, помогите мне в коде.

Ответы [ 2 ]

1 голос
/ 01 апреля 2020

Назначьте делегат CountryList для себя, self - это делегированный ViewController!

//MARK: Create a delegate property in Country List.
 weak var delegate: CountryListDelegate?

После создания экземпляра CountryList и назначения его делегата для себя

var countryList = CountryList()
countryList.delegate = self
1 голос
/ 01 апреля 2020

Установить делегата

countryList.delegate = self
let navController = UINavigationController(rootViewController: countryList)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...