Я конвертирую проект, который использует файлы nib для проекта, где я использую раскадровки. Приложение имеет домашний экран (HomeVC), который загружается в контроллер навигации. Когда приложение запускает его, запускается обработчик данных, который извлекает rss-данные из нескольких источников и сохраняет их в CoreData. В HomeVC я создавал следующий вид в стеке (FeedVC), чтобы я мог вызвать метод reloadData(), когда обработчик данных завершил загрузку фидов. Чтобы создать экземпляр FeedVC, я написал следующий код, когда настроил обработчик данных в HomeVC.Инициализация ViewController, когда вы не используете файлы Nib
// This initializes the Feed VC for use later in the VC
FeedViewController *view = [[FeedViewController alloc] initWithNibName: @"FeedViewController" bundle: nil];
self.feedViewController = view;
Когда обработчик данных закончен, я перезагрузил представление таблицы следующим кодом.
[self.feedViewController.feedsTableView reloadData];
Это хорошо работает.
Новый проект закодирован в Swift, и, как я уже упоминал, используется раскадровка. Моя проблема в том, что когда я звоню
self.feedViewController!.feedsTableView.reloadData()
Компилятор говорит мне, что это нуль. Это понятно, потому что у меня больше нет элемента для создания экземпляра. Как я могу создать экземпляр FeedVC, когда я использую Storyboard вместо nib-файлов?
Покушение Решение
Вот где я назвал VC.
Вот код, который я вошел в метод, который устанавливает обработчик данных.
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("FeedViewController") as! FeedViewController
self.feedViewController = vc
Вот мое имя раскадровки.
Может быть, этот вопрос является feedsTableView и не feedViewController. У меня есть feedsTableView, объявленный как опция в FeedViewController.
@IBOutlet weak var feedsTableView: UITableView!
Позаботьтесь,
Jon
Я пробовал это, и он не работал. Я показываю, что я делал выше. Возможно, я допустил ошибку. – jonthornham