3

この表のセル表示の問題には簡単な答えがあると感じていますが、それを見つけるには明らかに私以上の知恵が必要です。

これが、テーブルとそれを囲むビューの教科書コントローラー、デリゲート、およびデータソース クラスです...

import Cocoa

class Table8020ViewController: NSViewController, NSTableViewDelegate, NSTableViewDataSource {

    var tokenText: [String] = ["alpha", "beta", "gamma", "delta", "epsilon", "zeta"]

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    func numberOfRowsInTableView(aTableView: NSTableView) -> Int {
        println("numberOfRowsInTableView = \(tokenText.count)")
        return tokenText.count
    }

    func tableView(aTableView: NSTableView, objectValueForTableColumn aTableColumn: NSTableColumn?, row rowIndex: Int) -> AnyObject? {

        var result = aTableView.makeViewWithIdentifier(aTableColumn!.identifier, owner: self) as! NSTableCellView
            println("textField in  = \(result.textField!.stringValue)")

            result.textField!.stringValue = tokenText[rowIndex]

            println("textField out = \(result.textField!.stringValue)")
            return result
    }
}

正常に動作しているように見える .textField への更新をログに記録します。

numberOfRowsInTableView = 6
textField in  = Table View Cell
textField out = alpha
textField in  = Table View Cell
textField out = beta
textField in  = Table View Cell
textField out = gamma
textField in  = Table View Cell
textField out = delta
textField in  = Table View Cell
textField out = epsilon
textField in  = Table View Cell
textField out = zeta

しかし、実際のテーブル表示は元のインターフェースビルダーの値を保持しています! 「テーブル ビュー セル」 「返された結果」の後で、不思議なことが起こっているように見えます。

Swift V1.2 で最新の Xcode バージョン 6.3 (6D570) を使用しています。

4

1 に答える 1