В настоящее время у меня возникают проблемы с загрузкой моих данных области в мой xib tableView.У меня есть XIB-файл, NSView и NSViewController.Ячейка загружается в представление и возвращает правильное количество ячеек.Кажется, он не загружает мои данные.У меня есть боковая панель, которая при нажатии на дату загружает конкретные данные в detailViewController. Я настраиваю функцию печати, поэтому я использую файл XIB.Владельцем моего файла Xib является SlipsPrintView, а его tableCellIdentifier - «SlipsTableCellView».Все, что мне нужно знать, это загрузить данные из моей области в ячейку, когда я нажимаю на ячейку masterViewController.Ранее у меня это было настроено в раскадровке, и оно работало гладко, оно только печатало бы то, что на экране, поэтому для печати нескольких страниц я использую файл XIB.Вот почему я знаю, что я не загружаю данные в ячейку.Появляется ячейка, но не те данные, которые я хочу отобразить, когда я спрашиваю ее, я выбираю соответствующую строку.Вот код.
Спасибо большое
Коул
override func viewDidLoad() {
super.viewDidLoad()
@IBOutlet var shareView: NSView!
@IBOutlet weak var scrollView: NSScrollView!
var printController : NSViewController?
var slipsView: SlipsPrintView?
var leftVC: SlipsViewController?
var realm: Realm?
var slipData: Results<Home>?
var notificationToken: NotificationToken?
var selectedDate: DateChange? {
didSet {
loadData()
}
}
Здесь я синхронизирую пользователя с областью
let config = SyncUser.current!.configuration(realmURL: Constants.REALM_URL, fullSynchronization: true, enableSSLValidation: true, urlPrefix: nil)
self.realm = try! Realm(configuration: config)
loadData()
notificationToken = selectedDate?.selection.observe { [weak self] (changes) in
switch changes {
case .initial:
self?.slipsView?.slipsTableViewOne?.reloadData()
case .update:
self?.slipsView?.slipsTableViewOne?.reloadData()
case .error(let error):
let alert = NSAlert ()
alert.messageText = "An error Occured opening your Realm File"
alert.informativeText = "Please logout and log back in."
let result = alert.runModal()
switch result {
case NSApplication.ModalResponse.alertFirstButtonReturn:
print("first button")
default:
print("default")
}
fatalError("\(error)")
}
}
Здесь находится printController
self.printController = NSViewController.init(nibName: "SlipsPrintView", bundle: .main)
let printView : SlipsPrintView = self.printController!.view as! SlipsPrintView
self.shareView = printView
printView.slipsTableViewOne?.dataSource = self
if let docView = self.scrollView?.documentView {
docView.addSubview(printView)
printView.leadingAnchor.constraint(equalTo: docView.leadingAnchor, constant:self.vMargin).isActive = true
printView.trailingAnchor.constraint(equalTo: docView.trailingAnchor, constant:-self.vMargin).isActive = true
printView.topAnchor.constraint(equalTo: docView.topAnchor, constant:self.vMargin).isActive = true
docView.heightAnchor.constraint(equalTo: printView.heightAnchor, constant: self.vMargin*2).isActive = true
}
}
// MARK: - Этот метод загружает данные
func loadData() {
slipData = selectedDate?.selection.sorted(byKeyPath: "timestamp", ascending: true)
}
func updateView() {
loadData()
viewDidLoad()
}
}
Вот где встречаются методы источника данных.
extension SlipsViewController: NSTableViewDataSource {
func numberOfRows(in tableView: NSTableView) -> Int {
return 10
}
func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> Any? {
if let cell = tableView.makeView(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "SlipsTableCellView"), owner: nil) as? SlipsPrintView {
if row == 0 {
cell.firstStudentName?.stringValue = selectedDate?.selection.last?.mainString ?? ""
} if row == 1 {
}
}
return nil
}