我目前在将领域数据加载到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
}