Ich habe ein NSView mit einem eingebetteten NSTableView eingerichtet.OSX: Objekte innerhalb sichtbasierter Tabellenansichten dürfen nur mit dem Delegaten der Tabellenansicht verbunden werden.
Ich habe versucht, eine Aktion zu setzen für das NSTableViewCell ausgeführt werden, wenn eine Änderung an die Tabellenansicht Zelle hergestellt wird:
import Cocoa
class MyView: NSView
{
override func drawRect(dirtyRect: NSRect)
{
super.drawRect(dirtyRect)
}
@IBAction func valEntered2(sender: AnyObject)
{
Swift.print("valueEntered2")
}
}
Obwohl dieser Ansatz in Ordnung zuvor gearbeitet hat, wenn einen NSViewController mit auf einem Storyboard, wenn ich diesen Code kompilieren gibt es eine Warnung:
Aktion 'valEntered2:' gesendet von 'Table View Cell' ist verbunden mit 'Ansicht', ein ungültiges Ziel (Objekte in der Ansicht basieren Tabellenansichten sie nur an der Tabellenansicht des Delegierten angeschlossen werden)
So scheint es, dass es die Aktion nicht wie es in den NSView ist, so habe ich subclassed NSTableView so kann ich es dort stattdessen bewegen.
class MyTable: NSTableView, NSTableViewDataSource, NSTableViewDelegate
{
let appDelegate = NSApplication.sharedApplication().delegate as! AppDelegate
override init(frame frameRect: NSRect)
{
super.init(frame: frameRect)
}
required init?(coder: NSCoder)
{
super.init(coder: coder)
self.setDataSource(self)
self.setDelegate(self)
}
override func drawRect(dirtyRect: NSRect)
{
super.drawRect(dirtyRect)
}
func numberOfRowsInTableView(tableView: NSTableView) -> Int
{
return 5
}
func tableView(tableView: NSTableView, viewForTableColumn tableColumn: NSTableColumn?, row: Int) -> NSView?
{
let cell: NSTableCellView = tableView.makeViewWithIdentifier(tableColumn!.identifier, owner: self) as! NSTableCellView
cell.textField!.stringValue = "Hello World"
return cell
}
}
I haben Setup die Tabelle in der Ansicht, diese Klasse zu verwenden:
ich habe dies zu erwarten wäre die Delegierten für diese NSTableView sein und in der Lage sein die TableViewCell die Aktion zu MyTable hinzufügen, aber es weigert sich, erstellen die Handlung Ion.
Welche Schritte habe ich verpasst?
Ich habe die Änderungen in meinen Code kopiert. Die Zeile cell.delegate = self gibt den Wert vom Typ NSTableCellView hat keinen Mitgliedsdelegierten. Ich bekomme immer noch die gleiche Warnung bei der Kompilierung. – iphaaw
haben Sie den Delegaten "cellAction" in der Klasse "uitableview" hinzugefügt –
Ja. Ich habe Ihren Code kopiert und eingefügt. – iphaaw