Cocoa/テーブルビュー
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
&tag(Cocoa/テーブルビュー);
*目次 [#e40b4d85]
#contents
*関連ページ [#b5ec6a16]
*参考情報 [#i46f1c74]
*基本的実装方法 [#j00832ee]
**NSTableViewDataSourceを利用する方法 [#r50ff810]
-iOSのようにtableViewのアウトレットを作成し、そこにdataSo...
#pre{{
class Document: NSDocument, NSTableViewDataSource {
@IBOutlet weak var tableView: NSTableView!
var employees:[Employee] = []
override init() {
super.init()
let employee1 = Employee()
employee1.name = "従業員1"
employee1.age = 18
let employee2 = Employee()
employee2.name = "従業員2"
employee2.age = 28
employees.append(employee1)
employees.append(employee2)
}
// MARK: - NSTableViewDataSource
func numberOfRows(in tableView: NSTableView) -> Int {
return employees.count
}
func tableView(_ tableView: NSTableView, objectValueF...
let employee = employees[row]
var result:Any? = nil
if tableColumn?.identifier == "name" {
result = employee.name
} else {
result = String(employee.age)
}
return result
}
@IBAction func addClicked(_ sender: NSButton) {
let newEmployee = Employee()
employees.append(newEmployee)
tableView.reloadData()
}
@IBAction func deleteClicked(_ sender: NSButton) {
let index = tableView.selectedRow
Swift.print("index=\(index)")
if index >= 0 {
employees.remove(at: index)
}
tableView.reloadData()
}
}}
** NSArrayControllerを使用する方法 [#lc9ac27a]
-NSTableViewのContentをNSArrayControllerのarrangedObject...
#pre{{
class Document: NSDocument {
var employees:[Employee] = []
override init() {
super.init()
// Add your subclass-specific initialization here.
let employee1 = Employee()
employee1.name = "従業員1"
employee1.age = 18
let employee2 = Employee()
employee2.name = "従業員2"
employee2.age = 28
employees.append(employee1)
employees.append(employee2) }
override class func autosavesInPlace() -> Bool {
return true
}
}
}}
-列のヘッダクリックによってソートしたい場合、Table Viewの...
*トラブルシューティング [#gd90aefa]
**Interface Builderで列を追加しても表示されない。 [#ycda9...
-Table ViewのColumsnを2から3に増やしても実行すると新しい...
-実はこれは最後のカラムが表示されないだけ。実行中列の右端...
-Interface Builderでも同様で、Interface Builderで各カラム...
-もしくは各Columnのサイズを数字で設定してもよい(Attribute...
''以下PENDING''
-だたし上の方法だとカラムの自動リサイズができない。
-Column Sizingというプロパティが存在し、自動的にリサイズ...
-[[cocoa - How can I have the only column of my NSTableVi...
#pre{{
[tableView setColumnAutoresizingStyle:NSTableViewUniform...
[tableColumn setResizingMask:NSTableColumnAutoresizingMas...
//AND
[tableView sizeLastColumnToFit];
}}
終了行:
&tag(Cocoa/テーブルビュー);
*目次 [#e40b4d85]
#contents
*関連ページ [#b5ec6a16]
*参考情報 [#i46f1c74]
*基本的実装方法 [#j00832ee]
**NSTableViewDataSourceを利用する方法 [#r50ff810]
-iOSのようにtableViewのアウトレットを作成し、そこにdataSo...
#pre{{
class Document: NSDocument, NSTableViewDataSource {
@IBOutlet weak var tableView: NSTableView!
var employees:[Employee] = []
override init() {
super.init()
let employee1 = Employee()
employee1.name = "従業員1"
employee1.age = 18
let employee2 = Employee()
employee2.name = "従業員2"
employee2.age = 28
employees.append(employee1)
employees.append(employee2)
}
// MARK: - NSTableViewDataSource
func numberOfRows(in tableView: NSTableView) -> Int {
return employees.count
}
func tableView(_ tableView: NSTableView, objectValueF...
let employee = employees[row]
var result:Any? = nil
if tableColumn?.identifier == "name" {
result = employee.name
} else {
result = String(employee.age)
}
return result
}
@IBAction func addClicked(_ sender: NSButton) {
let newEmployee = Employee()
employees.append(newEmployee)
tableView.reloadData()
}
@IBAction func deleteClicked(_ sender: NSButton) {
let index = tableView.selectedRow
Swift.print("index=\(index)")
if index >= 0 {
employees.remove(at: index)
}
tableView.reloadData()
}
}}
** NSArrayControllerを使用する方法 [#lc9ac27a]
-NSTableViewのContentをNSArrayControllerのarrangedObject...
#pre{{
class Document: NSDocument {
var employees:[Employee] = []
override init() {
super.init()
// Add your subclass-specific initialization here.
let employee1 = Employee()
employee1.name = "従業員1"
employee1.age = 18
let employee2 = Employee()
employee2.name = "従業員2"
employee2.age = 28
employees.append(employee1)
employees.append(employee2) }
override class func autosavesInPlace() -> Bool {
return true
}
}
}}
-列のヘッダクリックによってソートしたい場合、Table Viewの...
*トラブルシューティング [#gd90aefa]
**Interface Builderで列を追加しても表示されない。 [#ycda9...
-Table ViewのColumsnを2から3に増やしても実行すると新しい...
-実はこれは最後のカラムが表示されないだけ。実行中列の右端...
-Interface Builderでも同様で、Interface Builderで各カラム...
-もしくは各Columnのサイズを数字で設定してもよい(Attribute...
''以下PENDING''
-だたし上の方法だとカラムの自動リサイズができない。
-Column Sizingというプロパティが存在し、自動的にリサイズ...
-[[cocoa - How can I have the only column of my NSTableVi...
#pre{{
[tableView setColumnAutoresizingStyle:NSTableViewUniform...
[tableColumn setResizingMask:NSTableColumnAutoresizingMas...
//AND
[tableView sizeLastColumnToFit];
}}
ページ名: