UITableViewCells没有出现在第二个标签

时间:2016-04-11 18:24:47

标签: ios swift uitableview uitabbar

我有以下问题: 我正在创建一个类似Pokédex的应用程序,在第一个选项卡上显示所有721神奇宝贝的列表,在第二个选项卡上显示另一个包含MyFavoritePokémon的列表。基本上,有两个相同的ViewControllers连接到我的TabBar。

我的故事板如下: Storyboard

所以这就是问题: 第一个(和初始)选项卡上的TableView工作正常。但是,当我在第二个选项卡上加载TableView时,会加载Pokémon,但不会显示。 我可以单击TableViewCell并转到详细信息页面,但TableViewCell中的标签没有显示任何内容。

Favorites View Pokédex View

这是我用来加载收藏夹TableView

的代码
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

}

委托和dataSource通过故事板设置。

以上代码有效,并且显示收藏夹列表就好了。完整Pokédex的课程有类似的结构。

我尝试过切换收藏夹和Pokédex,以便在启动时显示完整的神奇宝贝列表。所有721神奇宝贝都正确显示,但收藏夹不可见。

我还尝试了什么:

  • 一遍又一遍地检查重用标识符
  • 引用插座应正确绑定
  • 在viewDidAppear方法中调用TableView.reloadData()
  • 切换标签项

有没有人知道这里到底发生了什么? 随意提出更多问题

编辑:当我交换两个TabBar按钮时会发生这种情况,没有代码更改

GitHub Project Here

3 个答案:

答案 0 :(得分:3)

问题出在故事板单元标签框架中。为(Any,Any)Size Class设置视图控制器的约束。如果你能给我git的写权限,我可以在github上提交代码。感谢

答案 1 :(得分:0)

可能未设置您的表的委托和dataSource。

table.delegate = self
table.dataSource = self

当然,这是在将属性添加到视图控制器之后

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

答案 2 :(得分:0)

该控制器的行数始终为0, 我查看了你的代码pokemonList count始终为0,它没有更新数据

define([
	"dojo/_base/declare",
	"dijit/form/Select"
], function(declare, Select) {
     return declare([Select], {
       postMixInProperties: function(){
			// summary:
			//		set the missing message
			this.inherited(arguments);
			this._missingMsg = 'What ever message you want';
		}
     });
});