NSTableViewが組み込まれたNSViewをセットアップしました。OSX:ビューベースのテーブルビュー内のオブジェクトは、テーブルビューのデリゲートにしか接続できません
私はNSTableViewCellは変更がテーブルビューセルに行われたときに実行するアクションを設定しようとした:NSViewControllerを使用した場合
import Cocoa
class MyView: NSView
{
override func drawRect(dirtyRect: NSRect)
{
super.drawRect(dirtyRect)
}
@IBAction func valEntered2(sender: AnyObject)
{
Swift.print("valueEntered2")
}
}
このアプローチは、以前にうまく働いたがストーリーボード上で、このコードをコンパイルすると、警告が表示されます。
Action 'valEntered2:'は 'Table View Cell'によって送信され、無効なターゲットである 'View'に接続されていますテーブルビューのデリゲートに接続すること)
だから、私は私ではなく、そこに移動することができますNSTableViewをサブクラス化している、それはアクションがNSViewのにいる好きではないようです:。
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
}
}
私はセットアップにこのクラスを使用するには、ビューでテーブルを持っている:
私は、これがこのNSTableViewの委譲するとMyTableとにTableViewCellのアクションを追加することができると期待しているだろうが、それが作成することを拒否行為イオン。
どのような手順がありますか?
変更を自分のコードにコピーしました。 cell.delegate = selfという行は、NSTableCellView型の値にメンバーデリゲートがないことを示します。私はまだコンパイル時に同じ警告を受けています。 – iphaaw
uitableviewクラスの "cellAction"デリゲートを追加しました –
はい。コードをコピーして貼り付けました。 – iphaaw