Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos NSTextField不断重复标题_Macos_Cocoa_Swift - Fatal编程技术网

Macos NSTextField不断重复标题

Macos NSTextField不断重复标题,macos,cocoa,swift,Macos,Cocoa,Swift,我用Swift创建了一个新的OSX应用程序。从视图开始,将表视图拖动到视图中。然后我按ctrl键并从表视图中拖动,将AppDelegate添加为我的数据源和委托。最后,ctrl从AppDelegate中单击并拖动,为myTableView创建一个IBOutlet到表视图 为什么会这样?使用XCode版本6.1(6A1027) 在这种情况下构建以下结果: import Cocoa class AppDelegate: NSObject, NSApplicationDelegate, NST

我用Swift创建了一个新的OSX应用程序。从视图开始,将表视图拖动到视图中。然后我按ctrl键并从表视图中拖动,将AppDelegate添加为我的
数据源
委托
。最后,ctrl从AppDelegate中单击并拖动,为
myTableView
创建一个IBOutlet到表视图

为什么会这样?使用XCode版本6.1(6A1027)

在这种情况下构建以下结果:

import Cocoa    
class AppDelegate: NSObject, NSApplicationDelegate, NSTableViewDataSource, NSTableViewDelegate {

    @IBOutlet weak var window: NSWindow!
    @IBOutlet weak var myTableView: NSTableView!

    func applicationDidFinishLaunching(aNotification: NSNotification?) {
    }

    func numberOfRowsInTableView(aTableView: NSTableView!) -> Int
    {
        let numberOfRows:Int = getDataArray().count
        return numberOfRows
    }

    func tableView(tableView: NSTableView!, objectValueForTableColumn tableColumn: NSTableColumn!, row rowIndex: Int) -> AnyObject!
    {
        var newString: (AnyObject?) = getDataArray().objectAtIndex(rowIndex).objectForKey(tableColumn.identifier)
        println(newString!)
        return newString!
    }

    func applicationWillTerminate(aNotification: NSNotification?) {
        // Insert code here to tear down your application
    }

    func getDataArray () -> NSArray{
        var dataArray:[NSDictionary] = [["FirstName": "Debasis", "LastName": "Das"],
            ["FirstName": "Nishant", "LastName": "Singh"],
            ["FirstName": "John", "LastName": "Doe"],
            ["FirstName": "Jane", "LastName": "Doe"],
            ["FirstName": "Mary", "LastName": "Jane"]];
        //println(dataArray);
        return dataArray;
    }

}

当我将表格视图与文本单元格一起拖动时,也添加了一个表格视图单元格。我真的不知道为什么,但两年前的这个答案帮助我找到了答案

我注意到“objectValueForTableColumn”只有在没有其他单元格的情况下才有效。由于Xcode6.1会自动创建一个单元格,除非删除新单元格,否则此方法不再有效

为了保留这些单元格,甚至添加更多单元格,我们应该改用“viewForTableColumn”:在IB中,我将表格单元格视图命名为“custom”,然后创建了一个NSTableCellView来定位它

我还在IB中添加了另一个单元格,即ImageView,以说明我的示例

let myQuotes: [String] = ["text field inside cell one", "number two", "here's the tird", "four: a fourth one", "five: and a last one"]

func numberOfRowsInTableView(tableView: NSTableView!) -> Int {
    return myQuotes.count
}

func tableView(tableView: NSTableView!, viewForTableColumn tableColumn: NSTableColumn!, row: Int) -> NSView! {

    var result: NSTableCellView = tableView.makeViewWithIdentifier("custom", owner: self) as NSTableCellView

    result.textField.stringValue = myQuotes[row]

    let myAvatar: NSImage = NSImage(byReferencingFile: "Pictures/avatar.png")

    result.imageView.image = myAvatar

    return result

}

经过一段时间的跳转和使用Objective-C后,我实现了这一点。

您使用的是哪个版本的Xcode beta?使用的是Xcode版本6.1(6A1027)。切换到
viewForTableColumn
最终为我解决了这个问题--+1其他人不必导航到那里:选择大纲/表格视图,然后在“表视图”下的属性检查器区域中,将内容模式更改为“基于单元格”。那帮我修好了