首先,我是OSX / iOS编程的新手,我正在努力学习swift.我在java方面相当称职,并希望自学一些新东西.我知道swift编程语言处于早期阶段.
我有一个使用parse.com数据浏览器的表.我可以从该表中获取元素并将它们存储在一个数组中.通常,在java中,我会简单地迭代这些元素并填充JTable.现在,我的问题是……我将如何做到这一点?我试过读苹果api,我觉得我的智商下降了.我可以理解getNumberOfRows函数/方法,但其他函数对我来说毫无意义.我的xib文件中有一个NSTable,并且将委托和数据源放在app委托文件中.如何设置标识符以便我可以开始设置信息.
我知道我并没有真正帮助,但我非常感谢任何建议.
谢谢.
在tableview中获取内容的绝对基础是设置其数据源,该数据源必须采用NSTableViewDataSource协议.然后,您必须区分基于视图和基于单元格的tableview.在基于视图的视图中,您可以使用在Interface Builder中设计的视图,基于单元格的视图更古老,更简单.您了解numberOfRowsInTableView函数,因此我继续使用更复杂的函数.
基于细胞的TableVies
对于基于单元格的tableViews,第二个基本函数## heading ##是
func tableView(tableView: NSTableView!,objectValueForTableColumn tableColumn: NSTableColumn!,row: Int) -> AnyObject!
当你得到它,它很容易.作为第一个参数,您可以获得tableView(仅当您为多个tableView使用相同的dataSource时才会感兴趣).
第二个指定tableColumn.您可以使用其标识符来标识列.您在InterfaceBuilder中设置此标识符.单击您的tableview直到选中一列.然后在侧栏中设置Restoration ID.
作为最后一个参数,你得到你的行.您返回AnyObject类型的对象.我通常会返回一个字符串,我不知道NSNumber是否也有效.
一个简单的示例实现如下:
func tableView(tableView: NSTableView!,row: Int) -> AnyObject!{ var result = "" var columnIdentifier = tableColumn.identifier if columnIdentifier == "number" { result = "\(row+1)" } if columnIdentifier == "name" { result = model.persons[row].name } if columnIdentifier == "lastName" { result = model.persons[row].lastName } return result }
如果要设置值,请使用
func tableView(tableView: NSTableView!,setobjectValue object: AnyObject!,forTableColumn tableColumn: NSTableColumn!,row: Int)
Object表示应传输到数据模型的新值.
基于视图的TableViews
在基于视图的tableViews中,事物有所不同.
在这里,您必须在单独的nib文件中设计自定义视图.然后,在初始化程序中注册nib.
let nib = NSNib(nibNamed: "Example",bundle: NSBundle.mainBundle()) self.tableView.registerNib(nib,forIdentifier: "Example")
这允许您使用makeViewWithIdentifier:owner创建视图的实例:
然后你可以配置你的视图(我喜欢为此子类NSView)并将其作为结果传回
func tableView(tableView: NSTableView!,viewForTableColumn tableColumn: NSTableColumn!,row: Int) -> NSView!
示例实现:
func tableView(tableView: NSTableView!,row: Int) -> NSView!{ let view = tableView.makeViewWithIdentifier("Example",owner: self) as MyCustomView view.field1.stringValue = model.persons[row].name view.field2.stringValue = model.persons[row].lastName view.field3.stringValue = "\(row+1)" return view }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。