2016-08-03 21 views
0

Ich möchte eine Tabellenkalkulationstabelle mit Stackviews erstellen. Wie Sie jedoch im Bild sehen können, werden die Spalten nicht ausgerichtet, da vorherige Elemente breiter sind. Wie stelle ich sicher, dass sie ausgerichtet sind?Verschachtelte UIStackViews werden nicht ausgerichtet. Wie richte ich sie aus?

enter image description here

Dies ist, wie ich Stacks erstellen:

class MyTableFullScreenViewController: UIViewController { 

    var json: JSON? 

    @IBOutlet weak var scrollView: UIScrollView! 
    @IBOutlet weak var verticalStack: UIStackView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

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

      let horizontalStack = UIStackView() 
      horizontalStack.axis = .Horizontal 
      horizontalStack.spacing = 16 
      horizontalStack.distribution = .Fill 


      for j in 0..<json!["Rows"][i]["Column"].arrayValue.count{ 
       let innerJson = json!["Rows"][i]["Column"][j] 
       switch innerJson["InputType"].intValue{ 
       case 1: 
        Inputs.Input1(innerJson, parent: horizontalStack, isRepeatable: true) 
       case 11: 
        Inputs.Input11(innerJson, parent: horizontalStack, isRepeatable: true) 
       case 15: 
        Inputs.Input15(innerJson, parent: horizontalStack, isRepeatable: true) 
       default: 
        break 
       } 
      } 

      verticalStack.addArrangedSubview(horizontalStack) 

     } 

    } 


} 

Dies ist, wie Storyboard gemacht wird: enter image description here

+0

Haben Sie überprüft, wie hier die Verteilung '.FillEqually' (oder so ähnlich) funktioniert? – eMKa

+0

Äußerer Stapel ist .Füll, innere Stapel sind .FillEqually. –

+1

Falsches Werkzeug für den Job. Versuchen Sie eine Sammlungsansicht mit einem benutzerdefinierten Layout. – Avi

Antwort

0

Sie eine UICollectionView-UIStackView dies im Gegensatz verwendet werden soll .. Stellen Sie sich UIStackView als Wrapper für AutoLayout vor, was das Layout einer Sammlung von Ansichten innerhalb eines vordefinierten Bereichs vereinfacht. im Gegensatz zu einem scrollbaren Container, der in der Lage ist, das Layout einer praktisch unendlichen Anzahl von Ansichten zu handhaben.

Wenn Sie eine Tabelle erstellen, möchten Sie wahrscheinlich die Möglichkeit haben, horizontal und vertikal zu scrollen. Sie können jedoch nur vertikal nach dem von Ihnen geposteten Beispielcode blättern (es sei denn, Sie "hacken" UIStackView) aber an dieser Stelle können Sie auch eine UICollectionView verwenden).

Was ich empfehlen würde, erstellen Sie eine UITableView mit einer horizontal scrollenden UICollectionView in jeder Zelle. Alternativ können Sie die UICollectionViews je nach Ihren Anforderungen auch in einer vertikal scrollenden UICollectionView verschachteln.

Containing UICollectionViews/UITableViews innerhalb anderer UICollectionViews/UITableViews ist eigentlich sehr performant und in Szenarien wie die, die Sie beschrieben häufig verwendet.