Поле имеет нулевое значение после инициализации вместо этого поля имеет правильное значение внутри инициализации - PullRequest
0 голосов
/ 28 апреля 2019

Я пытаюсь установить значение в поле mainScreenViewController. Внутри функции инициализации после команды «self.mainScreenViewController = mainScreenViewControler» устанавливается значение (не ноль). После нажатия на элемент и вызова функции tapSortItem значение в поле mainScreenViewController равно нулю. Зачем? Что проблема ?

internal class MainScreenViewController: UITableViewController {                   
   private var mainScreenNavigationBarItems:   MainScreenNavigationBarItems?

   override func viewDidLoad() {
      super.viewDidLoad()
      mainScreenNavigationBarItems = MainScreenNavigationBarItems(self)
     }
 }



internal class MainScreenNavigationBarItems: UINavigationBar {
    private var mainScreenViewController: MainScreenViewController?

    init(_ mainScreenViewController: MainScreenViewController) {
        super.init(frame: CGRect())
        self.mainScreenViewController = mainScreenViewController
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

    @IBAction func tapSortItem(_ sender: UIBarButtonItem) {
        print("Sort Item was tapped")
        let alert = UIAlertController(title: "My Alert", message: "This is an alert.", preferredStyle: .alert)
        alert.addAction(UIAlertAction(title: NSLocalizedString("OK", comment: "Default action"), style: .default, handler: { _ in
        NSLog("The \"OK\" alert occured.")
    }))
        mainScreenViewController?.present(alert, animated: true, completion: nil)
   }
}
...