2017-10-17 14 views
0

をのUITableViewを制約することはできません私が「安全領域上揃えへ」を追加したいと思いUITableViewは安全な場所に

に制約を追加することはでき表示されません。安全なエリア内にあることが表示されません。

私は安全なエリアの境界内にとどまるために、テーブルビューを制限するにはどうすればよいですか?

+0

'automaticallyAdjustsScrollViewInsets'と' tableView.contentInsetA生活の質を高めます。前者は 'true'に、後者は' .never'以外に設定する必要があります。 –

+0

バージョンチェックが必要な場合は、if #available(iOS 11.0、*){tableView.contentInsetAdjustmentBehavior = .scrollableAxes} ' –

答えて

1

あなたはUITableViewControllerを使用しているようです。このようにして、tableViewのデフォルトの制約を変更する方法はありません。あなたが行うことができるのは、ナビゲーションコントローラを追加することだけです。 (UITableViewControllerをディスプレイの上部よりクリックしてください:Editor-> Embed In-> Navigation Controller)

別の方法は、UIViewControllerにUITableViewを追加することです。この場合、任意の制約を追加できます。

以下のコードを見てください。これは、次に何をすべきかを理解するのに役立ちます。

import UIKit 

class ViewController: UIViewController,UITableViewDataSource, UITableViewDelegate { 

    var data: [String] = ["Cell 1", "Cell 2", "Cell"] 
    var colors: [UIColor] = [.red, .green, .blue] 

    @IBOutlet weak var tableView: UITableView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     tableView.delegate = self 
     tableView.dataSource = self 
     tableView.reloadData() 
    } 

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "id", for: indexPath) 
     cell.textLabel?.text = data[indexPath.row] 
     cell.contentView.backgroundColor = colors[indexPath.row] 

     return cell 
    } 

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return data.count 
    } 

    func numberOfSections(in tableView: UITableView) -> Int { 
     return 1 
    } 

} 

最後に、次のスクリーンショットのようなものが表示されます。

P.S.プロトタイプセルに識別子を追加することを忘れないでください。私の例では、識別子は、ここで「ID」

TableView

あるすべてのXcodeプロジェクトのスクリーンショットです。私の解決策

Xcode project

0

UIViewControllerに、UITableViewControllerを変更し、ビューにのUITableViewを追加し、その後、上、下、左と右の制約を追加することでした。

あなたがクラッシュを取得することに注意してください、あなたは

@interface MyViewController : UIViewController 

UIViewController代わりのUITableViewController

@interface MyViewController : UITableViewController 

から継承するクラスを変更するまで、あなたは明らかにものUITableViewを再リンクする必要がありますに、とあなたが計画的にそれをしていないのであれば、データソースとデリゲートを接続してください。

関連する問題