2016-04-11 17 views
0

私は以下の問題があります: 最初のタブに721個のポケモンすべてのリストを表示するPokédexのようなアプリケーションと、My FavoritePokémonを含む2番目のタブに別のリストを表示します。基本的に、2つの同一のViewControllerがTabBarに接続されています。次のようにUITableViewCellsが第2のタブに表示されない

私の絵コンテは、次のとおりです。 Storyboard

ので、ここで問題です: テーブルビュー最初の(初期)タブでは正常に動作します。しかし、私が2番目のタブにTableViewをロードすると、ポケモンはロードされますが表示されません。 TableViewCellをクリックして詳細ページに移動できますが、TableViewCellのラベルには何も表示されません。

Favorites View Pokédex View

この私が積載お気に入りに使用するコードですテーブルビュー

class FavoritesViewController: BaseViewController, 
UITableViewDataSource, UITableViewDelegate { 

@IBOutlet var FavoritesListView: UITableView! 

var pokemonList: [String] = ["Nothing Here!"] 



func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("FavoriteCell", forIndexPath: indexPath) as! FavoriteCell 

    var name = pokemonList[indexPath.row] 

    capitalizeFirstLetter(&name) 

    cell.nameLabel.text = name 

    return cell; 
} 

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

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    print(pokemonList[indexPath.row]) 

    self.performSegueWithIdentifier("ToPokemonDetail", sender: pokemonList[indexPath.row]) 
} 




override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if(segue.identifier == "ToPokemonDetail"){ 
     let destination = segue.destinationViewController as! PokemonDetailViewController 
     let thisPokemon = sender as! String 

     destination.currentPokemon = thisPokemon 
    } 
} 

override func viewWillAppear(animated: Bool) { 
    FavoritesListView.reloadData() 
} 


override func viewDidLoad() { 
    super.viewDidLoad() 

    // Fetch the cached list, getNames returns an array of strings 
    let list = utility.getNames("Favorites") 

    pokemonList = list 

} 

デリゲートとデータソースはストーリーボードを経由して設定されています。

上記のコードは機能し、お気に入りの一覧を表示します。完全なPokédexのクラスも同様の構造です。

私は起動時に完全なポケモンリストを表示するように、お気に入りとポケドスを切り替えることを試みました。すべての721ポケモンは正しく表示されますが、お気に入りは表示されません。

  • はオーバー、再利用識別子をチェックし、
  • 超える参照コンセントがviewDidAppear方法
  • 切り替えにTableView.reloadData()を呼び出す
  • 正しくバインドする必要があります:私は試してみました他に何

    タブの項目の周り

ここで何が起こっているのですか?それ以上の質問

気軽に

編集:これは私が約2つのTabBarのボタンを入れ替えるときに何が起こるかで、何のコードが変更されない

GitHub Project Here

+0

IndexPathの行のセルが呼び出されているか、デリゲートが接続されていますか? –

+0

これの背後にコードを表示できますか? – Mehul

+0

どこからいつFavを取得していますか?テーブルをリロードする前にデータを取得する必要があります。 –

答えて

0

おそらくテーブルのデリゲートとデータソースが設定されていません。もちろん

table.delegate = self 
table.dataSource = self 

あなたは

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 
+0

デリゲートやデータソースには、タブバーがありません。私の更新された質問を見てください。私は、TableViewControllersの1つの背後にコードを追加しました – Baksteen

+0

ああ申し訳ありません。それが他の人を助ける場合に備えて私の回答を残しておきます。 – penatheboss

3

問題は、ストーリーボード、セルのラベルのフレームにある、あなたのビューコントローラにプロパティを追加した後、これがあります。 View Controllerの制約を(Any、Any)Sizeクラスに設定します。私はgitubのコードをコミットすることができます場合は、私はあなたのgitに書き込み権限を与えることができます。おかげ

0

行のあなたの番号は常に0と、そのコントローラの、私はあなたのコードのpokemonList数に見えた は常に0その

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

それにデータを更新していないされて大きな問題は、あなたのPokemonDetailViewControllerでのUITableViewControllerではないです。 UITableViewDataSource、UITableViewDelegateから固有のものである必要があり、ストーリーボードビューに接続してテーブルのデータと書式設定を行う必要があります。

関連する問題