2015-05-28 3 views
0

Я конвертирую проект, который использует файлы 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.

enter image description here

Вот код, который я вошел в метод, который устанавливает обработчик данных.

let storyboard = UIStoryboard(name: "Main", bundle: nil) 
     let vc = storyboard.instantiateViewControllerWithIdentifier("FeedViewController") as! FeedViewController 
     self.feedViewController = vc 

Вот мое имя раскадровки.

enter image description here

Может быть, этот вопрос является feedsTableView и не feedViewController. У меня есть feedsTableView, объявленный как опция в FeedViewController.

@IBOutlet weak var feedsTableView: UITableView! 

Позаботьтесь,

Jon

ответ

1

Прежде всего, вы должны установить раскадровки ID в идентичности инспектора с помощью Builder Интерфейс:

enter image description here

И то вы можете вызвать следующий код, где бы вы хотели создать экземпляр FeedViewController:

let storyboard = UIStoryboard(name: "MyStoryboardName", bundle: nil) 
let vc = storyboard.instantiateViewControllerWithIdentifier("nameOfYouPut") as! FeedViewController 

Я надеюсь, что это поможет вам.

+0

Я пробовал это, и он не работал. Я показываю, что я делал выше. Возможно, я допустил ошибку. – jonthornham

Смежные вопросы