У меня проблема: Я делаю приложение, подобное Pokédex, которое отображает список всех 721 Pokémon на первой вкладке и другой список на второй вкладке, содержащей My Favorite Pokémon. По сути, есть два идентичных ViewControllers, подключенных к моему TabBar.UITableViewCells не отображается во второй вкладке
Мой раскадровка выглядит следующим образом:
Так вот проблема: TableView на первом (и начальная) вкладка работает отлично. Однако, когда я загружаю TableView на второй вкладке, Pokémon загружаются, но не отображаются. Я могу щелкнуть TableViewCell и перейти на страницу подробностей, но ярлык в TableViewCell ничего не показывает.
Это код я использую для загрузки Избранное 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 вокруг, чтобы он показывал полный список Pokémon при запуске. Все 721 Pokémon показаны правильно, но затем «Избранное» не отображаются.
Что еще я пробовал:
- Проверка Повторное использование идентификаторов, снова и снова
- Ссылки на выходы должны быть связаны правильно
- Вызов TableView.reloadData() в методе viewDidAppear
- Switching вокруг таблеток
Кто-нибудь знает, что здесь происходит? Не стесняйтесь задавать больше вопросов
Edit: это то, что происходит, когда я поменять местами две TabBar кнопки вокруг, код не изменяется
Является ли ваша ячейка для строки при вызове IndexPath или связаны делегаты? –
Вы можете показать код позади этого? – Mehul
Откуда и когда вы забираете свой Fav? Он должен получить данные перед перезагрузкой таблицы. –