Пытаюсь построить мое первое приложение. Использование TableView для представления 4 различных разделов. Каждый раздел имеет свой тип ячейки, который определен в файле .xib. В последнем разделе TableView ячейка представлена двумя кнопками, плюс и минус.
Когда, например, нажата кнопка плюс, она вызывает следующий код в классе, связанном с ячейкой:
// link to the viewcontroller with the tableview in it
let mainViewController = ViewController()
// func called when plusbutton is tapped
@IBAction func plusButtonTapped(_ sender: UIButton) {
// viewcontroller that should popup when the button is tapped
let popup = PopupViewController()
let sbPopup = SBCardPopupViewController(contentViewController: popup)
// call to show()
sbPopup.show(onViewController: mainViewController)
}
// show() function that is called
public func show(onViewController viewController: UIViewController) {
self.modalPresentationStyle = .overCurrentContext
viewController.present(self, animated: false, completion: nil)
}
Когда я нажимаю кнопку в симуляторе, должен появиться PopupViewController, но отображается следующее предупреждение:
Warning: Attempt to present "balance1.SBCardPopupViewController: 0x7fdf8752cb20> on <balance1.ViewController: 0x7fdf8743cac0> whose view is not in the window hierarchy!
Я попытался исследовать предупреждение и нашел некоторые другие темы, связанные с ним. Ни одно из решений не сработало для меня. Может быть, это связано с тем, что я вызываю plusButtonTapped () из ячейки, определенной в файле .xib?
Я следовал этому руководству на YouTube: https://www.youtube.com/watch?v=9yUIOjykPDU
Все шло хорошо до 10:36, где show () вызывается на том же VC, где живет кнопка, которая вызывает функцию. В моем случае plusButton, который вызывает функцию show (), живет в ячейке, определенной в отдельном файле .xib, и, следовательно, не в (главном) VC (как показано в руководстве). Это как-то связано с проблемой, с которой я сталкиваюсь?