2016-04-01 7 views
1

私は、主にTab Bar Controller、Navigation Controller、Table View Controllerの使用に関するストーリーボードのチュートリアルを学習していました。テーブルビューコントローラは、ナビゲーションコントローラに組み込まれています。テーブルビューのセルを表示できないのはなぜですか?

しかし、このアプリを実行すると、テーブルビューのセルが表示されません。私のコードをダブルチェックしましたが、それでも理由を見つけることができませんでした。ここにはストーリーボードの2つのメイジがあります。 Document Outline,click here. View Controller Scene, here.

ViewController.swiftのコードはこちらです。あなたのスクリーンショット( "ドキュメントアウトライン")では

import UIKit 
import Foundation 

struct Player 
{ 
    var name:String? 
    var game:String? 
    var rating:Int 

    init(name:String?, game:String?,rating:Int) 
    { 
     self.name = name 
     self.game = game 
     self.rating = rating 
    } 
} 

let playersData = [ 
Player(name: "Bill Evans", game: "TTT", rating: 4), 
Player(name: "OD", game: "Spin the Bottle", rating: 5), 
Player(name: "DB", game: "Texas Holder", rating: 2)] 



class PlayersViewController: UITableViewController { 

var players:[Player] = playersData 


override func viewDidLoad() { 
    super.viewDidLoad() 

} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

// MARK: - Table view data source 

override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 

    return 1 
} 

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

    return players.count 
} 

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{ 

    //This method will check to see if there is an existing cell that can be recycled.If not, it will automatically allocate a prototype cell and return it to you. 
    let cell = tableView.dequeueReusableCellWithIdentifier("PlayerCell", forIndexPath: indexPath) 


    let player = players[indexPath.row]as Player 
    cell.textLabel?.text = player.name 
    cell.detailTextLabel?.text = player.game 
    return cell 

    } 
} 
+2

tableviewデータソースを設定して適切に委任しましたか?あなたのビューコントローラを選択し、テーブルのデリゲートとデータソースをビューコントローラに設定して再実行してください:) –

+0

Ehh、私はtableviewのデータソースとデリゲートをチェックしました。問題はIDインスペクタにあります。カスタムクラスは "UITableViewController"の代わりに "PlayersViewController"にする必要があります。とにかく、 – Magenta

答えて

1

PlayersViewControllerシーンがあります。 これは、Players View Controller(スペースを含む)である必要があります。

これは、PlayersViewControllerをViewControllerのtitleと設定することを意味します。 このシーン(ViewController)にはcustom classと設定する必要があります。

シーンはUITableViewControllerによって処理されるため、現時点ではデータはありません。

これを修正するには、ビューコントローラまたはシーンを選択し、IDインスペクタに移動してPlayersViewControllerClassプロパティに設定します。

+0

ありがとう、問題はIDインスペクタです。私はPlayersViewControllerにそれを変更することを忘れました。 – Magenta

+0

問題が解決したら、私の投稿を受け入れてください。 –

0
//register your cell(nib) in viewdidload 
let customCellNib: UINib = UINib(nibName:@"nibName", bundle: nil) 
yourTableView.registerNib(customCellNib, forCellReuseIdentifier:@"PlayerCell")