Macos NSTextField不断重复标题
我用Swift创建了一个新的OSX应用程序。从视图开始,将表视图拖动到视图中。然后我按ctrl键并从表视图中拖动,将AppDelegate添加为我的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
数据源
和委托
。最后,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其他人不必导航到那里:选择大纲/表格视图,然后在“表视图”下的属性检查器区域中,将内容模式更改为“基于单元格”。那帮我修好了