2016-05-16 142 views
2

我需要创建excel等表格电子表格。他们将在TableViewController的单元格中。所以在不同的单元格中会有多个电子表格。例如:如何在Swift中创建类似电子表格的表格?

Example spreadsheet

我的第一种方法是创建嵌套UICollectionViews。但是,它大大减缓了用户界面。看来使用UICollectionView对性能不利。这就是我如何实现它:

 let table = UIStackView() 
     table.axis = .Vertical 
     table.spacing = 8 

     let json = JSON(data: jsonNew) 

     for i in 0..<json["Rows"].count{ 

      let horizontal = UIStackView() 
      horizontal.axis = .Horizontal 
      horizontal.spacing = 8 

      for j in 0..<json["Rows"][i]["Column"].count{ 

       let label = UILabel() 
       label.text = json["Rows"][i]["Column"][j].string! 
       label.lineBreakMode = .ByWordWrapping 
       label.numberOfLines = 0 
       label.font = label.font.fontWithSize(12) 
       horizontal.addArrangedSubview(label) 

      } 

      table.addArrangedSubview(horizontal) 

     } 

     parent.addSubview(table) 
     return table 

问题是,是否有任何其他方式来实现这种表以更好的方式吗?

+0

。你为什么不使用ONE collectionview呢? –

+0

所有标签的一个collectionview?我如何对齐它们? –

+0

看看https://github.com/mutualmobile/MMSpreadsheetView得到一个想法... –

回答

4

由于您热切地构建整个层次结构,因此在您的示例中构建的一堆集合视图将具有可怕的性能 - 根据屏幕位于潜在非常高的表中的位置,垂直方向无法重用单元。

自定义集合视图布局会成为完成此操作的一种自然方式。也许KEZCollectionViewTableLayout中的代码可以用作灵感?还有MMSpreadsheetView

您可能还会发现this blog post有趣。

(有关于如何具体实现这个using UICollectionView一个相关的问题。)

你正在谈论嵌套collectionviews但你的代码示例中使用stackviews
+0

我可以在Swift中使用MMSpreadsheetView吗? –

+0

是的,绝对。你可以阅读关于如何在两者之间进行互操作的例子:https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/ – mz2

+0

好的,谢谢!我会看看。 –

相关问题