2017-06-18 19 views
1

コード内のサンプルデータで基本的なテーブルビューを作成しようとしています。ここに私のViewControllerです:なぜ私のテーブルビューにデータが入力されていませんか?

import UIKit 

class TableViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { 

    @IBOutlet weak var postTableView: UITableView! 

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

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "postcell", for: indexPath) 

     cell.textLabel?.text = "title" 
     cell.detailTextLabel?.text = "detail" 
     return cell 
    } 
} 

は、ここで私は名前"postcell"が正しいことを確信していると私は、データソースとデリゲートとしてのViewControllerへのtableViewをフックアップしたことを私のストーリーボード enter image description here

です。

iOSシミュレータでコードを実行すると、セルが表示されません。これは私が見たものである:ここでは

enter image description here

は私のスタックビュー enter image description here

スタックビューのプロパティ

enter image description here enter image description here

上の制約は、私が使用したくないですUITableViewController

テーブルセルを表示するにはどうすればよいですか?

+0

あなたのストーリーボードで、View Controllerのクラスが 'TableViewController'であることを確認しましたか? – TylerTheCompiler

+0

@MrSaturnはい、それはTableViewControllerです –

+0

@MrSaturn私のストーリーボードを追加しました。それは役に立ちますか?種別: –

答えて

2

「postcellは」ストーリーボードからプロトタイプのセルではない場合、あなたはのviewDidLoadに登録する必要があります。

postTableView.register(UITableViewCell.self, forCellReuseIdentifier: "postcell") 

それはXIBテーブルビューセルである場合は、次のようにあなたがそれを登録しますが:

ここに示されているよう
postTableView.register(UINib(nibName: "NibName", bundle: nil), forCellReuseIdentifier: "postcell") 

は、あなたがストーリーボードからそれをやるとしたら、あなたのテーブルビューに、再利用識別子でプロトタイプのセル(またはテーブルビューセル)をドラッグし、「postcell」それを呼び出す:

Prototype table view cell

また、あなたのviewDidLoadで、次の行われていることを確認してください:あなたも必要になります。もちろん、

postTableView.delegate = self 
    postTableView.dataSource = self 

のtableViewで
func numberOfSections(in tableView: UITableView) -> Int { 
     return 1 
    } 
+2

'numberOfSections(in:)'は必須ではありません。それを実装しないと、1つのセクションが仮定されます。 – TylerTheCompiler

+0

ストーリーボードのセルをプロトタイプセルにする方法はありますか? –

+0

はい。オブジェクトライブラリのテーブルビューセルをテーブルビューにドラッグするだけで、再利用識別子で「ポストセル」と表示されます。 – gwinyai

1

(_のtableView:のUITableView、cellForRowAtをindexPath:IndexPath)

let cell = tableView.dequeueReusableCell(withIdentifier: "postcell"、for:indexPath)asポストセル //この行を追加

1

@MrSaturnはスタックビューに問題があるとコメントに指摘してくれてありがとうございます。ストーリーボードでは、スタックビューの配置プロパティを中心から塗りつぶしに変更する必要がありました。

関連する問題