Swift пользовательский делегат xib - PullRequest
0 голосов
/ 04 июля 2018

Я пытаюсь создать вид выбора даты для повторного использования. Когда пользователь нажимает кнопку «DOB», отображается символ выбора даты. Я хочу передать обратно ViewController выбранную дату.

При попытке реализовать метод делегата для достижения этого я получаю «неожиданно найденный ноль» в строке ниже:

делегат.myModularDidFinish (контроллер: сам, дата: "(datePicker.date)")

Как я могу использовать делегата для возврата даты, выбранной в пользовательском представлении, в ViewController, в котором он представлен?

ViewController:

    class ViewController2: UIViewController, MyModalDelegate2 {

    @IBAction func dobButton(_ sender: UIButton) {

        let allViewsInXibArray = Bundle.main.loadNibNamed("MyModalVC2", owner: self, options: nil)
        let dobView = allViewsInXibArray?.first as! UIView
        self.view.addSubview(dobView)
    }
    func myModularDidFinish(controller: MyModalVC2, date: String) {
        print(date)
    }

}

Пользовательский класс xib:

protocol MyModalDelegate2 {
    func myModularDidFinish(controller: MyModalVC2, date: String)
}

    class MyModalVC2: UIView {

        var delegate: MyModalDelegate2! = nil

        @IBOutlet weak var datePicker: UIDatePicker!
        @IBAction func datePicker(_ sender: Any) {

            delegate.myModularDidFinish( controller: self, date: "\(datePicker.date)")
        }

    }

1 Ответ

0 голосов
/ 04 июля 2018

Вам необходимо установить делегата

let allViewsInXibArray = Bundle.main.loadNibNamed("MyModalVC2", owner: self, options: nil)
let dobView = allViewsInXibArray?.first as! MyModalVC2
dobView.delegate = self
self.view.addSubview(dobView)

//

также предполагается, что вам нужна только дата, потому что self должен быть освобожден, так как вы удалите представление средства выбора из его родителя после получения даты

protocol MyModalDelegate2 {
    func myModularDidFinish(date: String)
}

class MyModalVC2: UIView {

   var delegate: MyModalDelegate2?
   @IBOutlet weak var datePicker: UIDatePicker!
   @IBAction func datePicker(_ sender: Any) {
       delegate?.myModularDidFinish(date: "\(datePicker.date)")
   }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...