ビューベースのテーブルを利用する場合は、空のデータセットがあることがわかっているときにセルの表示を反転することができます。トリックはあなたのテーブルを配列にバインドし、それを空にする代わりに1つの項目インジケータを持つことです。
私はここにあなたのためのサンプルプロジェクトを作成しました:
https://github.com/emankovski/nstableview-empty-picture
しかし、一般的なロジックは、実際にはかなり簡単です:私はペン先にNSTableCellViewオブジェクトを作成し、私はデータなしの指標を見ると、ちょうどそれを返します。また、テーブルビューの行の高さをテキストセルを持つセルよりもイメージの方が大きいセルに変更することに注意してください。私はそれが助けて欲しいストーリーボード用
class AppDelegate: NSObject, NSApplicationDelegate, NSTableViewDataSource {
private static let placeholder = "<Placeholder>"
dynamic var items = [String]()
@IBOutlet weak var window: NSWindow!
@IBOutlet weak var tableView: NSTableView!
@IBOutlet weak var imageCell: NSTableCellView!
@IBAction func addRowsPressed(sender: AnyObject) {
appendItems()
}
@IBAction func clearTablePressed(sender: AnyObject) {
removeItems()
}
func applicationDidFinishLaunching(aNotification: NSNotification) {
appendItems()
}
func applicationWillTerminate(aNotification: NSNotification) {
// Insert code here to tear down your application
}
func appendItems() {
items.removeAll()
items.append("One")
items.append("Two")
items.append("Three")
tableView.rowHeight = 20
}
func removeItems() {
items.removeAll()
tableView.rowHeight = 50
items.append(AppDelegate.placeholder)
}
func tableView(tableView: NSTableView, viewForTableColumn tableColumn: NSTableColumn?, row: Int) -> NSView? {
if items[row] == AppDelegate.placeholder {
return imageCell
}
let cellView = tableView.makeViewWithIdentifier("CellView", owner: nil) as! NSTableCellView
return cellView
}
}
UPDATE:ストーリーボードコントローラを表示するために、表のセルの表示をドラッグする方法の 写真:
それからちょうどその出口へのオブジェクトのドラッグを接続する出口を作成し
:
@IBOutlet var tableCellView: NSTableCellView!
これは有望そうです。私はxibではなくストーリーボードを使用していますが、cellViewとimageViewの間でテーブルの列を切り替える方法はありますか?イメージセルを自分の列にドラッグしようとしましたが、既存のテキストセルを置き換えます。 – Ravi
オブジェクトライブラリからテーブル(ビューまたはイメージ)をテーブルにドラッグするのではなく、ビューコントローラがリストされているドキュメントのアウトライン領域にドラッグします。コントローラを表示するあなたの兄弟にドラッグします。 –
私はストーリーボードの指示で私の答えを更新します。 –