2016-11-07 14 views
2

私はXcodeとSwiftの開発が比較的新しいので、静的でグループ化されたセル(iPad上)のUITableViewControllerに関する質問があります。私はセル幅をスクリーン全体と同じくらい大きくしない自然な解決策が必要です。 私はこれを試してみました:静的グループ化TableViewセルの幅を設定する方法

override func viewDidAppear(_ animated: Bool) { 
     tableView.frame = CGRect(x: 175, y: 70, width: view.bounds.width-350, height: view.bounds.height) 
} 

問題は、これは本当に厄介な外観と上下にnavigationbarsとtabbarsとトリッキー取得しますが、especaillyそれはviewDidAppearに設定されているため、正常に動作しないことがあるので、使用している場合スワイプバックジェスチャ([設定]など)では、ビューはまだ1秒間全幅で表示されます。

この問題を解決する他の方法がありますか?たぶんいくつかの自動レイアウトのもの、私は知らない、私は知っているすべてを試した...

助けていただければ幸いです!ありがとうございました!

Placing a tableview in a normal ViewController grouped isn't allowed by Xcode...

答えて

0

あなたが言うように、自動レイアウトはおそらく行く方法です。 Interface Builderを使用している場合は、そこに制約を設定するだけです。そこに助けとなる情報がたくさんあります。 https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/WorkingwithConstraintsinInterfaceBuidler.html

標準UIViewControllerに切り替えて、UITableViewを手動でルートビューのサブビューとして追加する必要があります。また、ビューコントローラをテーブルビューのデリゲートとデータソースとして手動で設定する必要があります。次に、好きな場所にテーブルビューを配置することができます。残念ながら、静的なセルを持つことはできませんが、データを動的に設定することは、とにかく長期的にはより良い選択となる傾向があります。

UITableViewControllerを使用してこれを使用するもう1つの方法は、子ビューコントローラとして設定することですが、これはもっと面倒であり、私の経験ではより制限的な傾向があります。

コード例のように手動でフレームを設定する場合は、viewDidLayoutSubviewsメソッドでフレームを手動で設定する必要があります。

+0

あなたの答えをありがとう!しかし、私はストーリーボードのuitableviewcontrollerテーブルビューに制約を追加することはできません... –

+0

ああ申し訳ありません。これをカバーするための答えを更新しました。 – ganzogo

+0

グループ化されたテーブルビューを通常のViewControllerに追加することはできません。それはUITableViewControllerにある必要があります。 –

関連する問題