首先,我是OSX / iOS编程的新手,我正在努力学习swift.我在java方面相当称职,并希望自学一些新东西.我知道swift编程语言处于早期阶段.
我有一个使用parse.com数据浏览器的表.我可以从该表中获取元素并将它们存储在一个数组中.通常,在java中,我会简单地迭代这些元素并填充Jtable.现在,我的问题是……我将如何做到这一点?我试过读苹果API,我觉得我的智商下降了.我可以理解getNumberOfRows函数/方法,但其他函数对我来说毫无意义.我的xib文件中有一个NStable,并且将委托和数据源放在app委托文件中.如何设置标识符以便我可以开始设置信息.
我知道我并没有真正帮助,但我非常感谢任何建议.
谢谢.
@H_403_10@ 是的,Cocoa的tablevIEws很复杂.在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}总结
以上是内存溢出为你收集整理的swift – 将数据解析为NSTableView全部内容,希望文章能够帮你解决swift – 将数据解析为NSTableView所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)