Я пытаюсь передать модель данных из моего начального контроллера представления в контроллер представления, который теперь находится на экране. У меня есть контейнер, который показывает PDF. Когда я запускаю код, документ, который передается в контейнер, по какой-то причине равен нулю.
Я использовал отладчик и смотрю, как он настроен в контроллере начального представления, но когда загружается следующая раскадровка, эта переменная по какой-то причине теперь равна нулю. Я попробовал это в viewDidAppear
, но у меня та же проблема.
Мой начальный вид контроллера (домашняя страница)
let documentGet = Data.documentModel[selectedRow - 1]
let storyboard = UIStoryboard(name: String(describing: NoteTakingViewController.self), bundle: nil)
let vc = storyboard.instantiateInitialViewController() as! NoteTakingViewController
vc.documentSet = documentGet
//self.navigationController?.pushViewController(vc, animated: true)
//self.present(vc, animated: true, completion: nil)
self.show(vc, sender: selectedRow)
Следующий контроллер представления для раскадровки, где я передаю предыдущий vc.documentSet = documentGet
let pdfViewer = PDFView()
@IBOutlet weak var PDFClass: PDFViewClass!
var documentSet:DocumentModel!
override func viewDidLoad() {
super.viewDidLoad()
PDFClass.setDocument(document: self.documentSet) <----(this is where the error occurs)
self.title = documentSet.title
navigationController?.navigationBar.prefersLargeTitles = false
}
Это контроллер представления для представления контейнера. Это пользовательский класс, поскольку я пытался заставить его работать на предыдущем контроллере, но он заблокирует панель инструментов, которую я пытаюсь выяснить под панелью навигации (да, непосредственно под панелью навигации)
private func configurePDF() {
pdfViewer.translatesAutoresizingMaskIntoConstraints = true
view.addSubview(pdfViewer)
}
func setDocument(document: DocumentModel!) {
configurePDF()
let doc = PDFDocument(url: document.url)
pdfViewer.document = doc
}
Я ожидаю, что данные pdf будут отправлены с домашней страницы -> контроллер представления -> контроллер представления контейнера. Но я получаю ноль на контроллере представления. Наверное, я просто не понимаю, как загружается UIView. Мой мыслительный процесс заключается в том, что переменная в контроллере представления установлена с vc.documentSet = documentGet
, тогда когда это представление будет запущено, оно передаст переменную в контейнерное представление.
Я надеюсь, что это не что-то супер простое, но способ работы swift отличается от моего опыта работы с Java.