Загрузка данных области в Xib TableView в Swift - PullRequest
0 голосов
/ 27 февраля 2019

В настоящее время у меня возникают проблемы с загрузкой моих данных области в мой 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
        }
...