2016-05-16 6 views
2

Excelのような表スプレッドシートを作成する必要がありました。そしてそれらはTableViewControllerのセルにあります。したがって、異なるセルに複数のスプレッドシートが存在します。例:スウィフトでスプレッドシートのような表を作成するには?

Example spreadsheet

私の最初のアプローチは、ネストされたUICollectionViewsを作成することでした。しかし、UIが大幅に遅くなりました。それは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

あなたのコードサンプルでは、​​ネストされたcollectionviewsが、使用stackviewsについて話しています。なぜあなたは単にcollectionviewを使いませんか? –

+0

すべてのラベルのコレクションビューは1つですか?どのように整列させるのですか? –

+0

https://github.com/mutualmobile/MMSpreadsheetViewをご覧ください。 –

答えて

4

例のように構築されたコレクションビューのスタックは、階層全体を熱心に構築するため、パフォーマンスが非常に悪くなります。画面が潜在的に非常に背の高いテーブルにある場合、垂直方向にセルが再利用されません。

カスタムコレクションビューのレイアウトは、これを達成するための自然な方法の1つとなります。おそらくKEZCollectionViewTableLayoutのコードはインスピレーションとして機能するでしょうか? MMSpreadsheetViewもあります。

また、this blog postが面白いかもしれません。

(特にこのusing UICollectionViewを達成する方法についての関連質問があります。)

+0

SwiftでMMSpreadsheetViewを使用できますか? –

+0

はい、絶対に。この2つの方法を相互運用する方法については、https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/ – mz2

+0

をご覧ください。ありがとうございます!確認してみるよ。 –

関連する問題