2014-11-22 3 views
0

У меня есть функция в MasterViewControllerфункции Доступа в MasterViewController из DetailViewController (быстрый)

func removeLocation(city: String){ 
     objects.removeObject(city) 
     self.tableView.reloadData() 
    } 

В моем DetailViewController проверить, является ли город и если его нет, я хочу, чтобы удалить его из таблицы в MasterViewController , Я передаю себя в prepareForSegue() от MasterView к DetailView и я назначу его

var masterViewController: MasterViewController 

Но тогда я получаю сообщение об ошибке сказав, что он не инициализирован, и он хочет, чтобы у меня эта Initializer

required init(coder aDecoder: NSCoder) { 
    fatalError("init(coder:) has not been implemented") 
} 

Что ломает мою всю программу, когда я запускаю ее, и дает мне ожидаемую фатальную ошибку.

Ho Я могу создать экземпляр MasterView в DetailView без инициализатора или получить доступ к функции в MasterView из DetailView?

Это Swift Кстати, я нашел несколько советов о том, как решить эту проблему на C, но я не смог их реализовать.

ответ

0

Используйте опцию.

var masterViewController: MasterViewController? 

При создании класса необязательные инициализации необязательно.

В prepareForSegue() присвоить указатель, как обычно:

destinationViewController.masterViewController = self 

Затем, когда вам нужно позвонить removeLocation:

masterViewController?.removeLocation("London") 
+0

Спасибо! Но теперь мне еще нужно вернуться в MasterView из DetailView, и только тогда город будет удален. Есть ли способ автоматически перенаправить на MasterView после того, как запись была удалена из таблицы в MasterView? – romada

+0

Я не буду следовать за тобой. Не могли бы вы описать, как вы хотите, чтобы это работало с точки зрения пользователя? – vacawama

+0

Итак, у вас есть табличные ящики с такими местами, как «Лондон», «Бостон» и т. Д. Затем вы нажимаете на них, и он показывает вам detailViewController с подробностями города, которые я получаю с сервера. Прежде чем показывать детали, я проверяю, существует ли город. Если он не отправляет уведомление о предупреждении о том, что город не найден. Я нажимаю OK, и я снова хочу видеть ячейки таблицы. Но в настоящее время, когда я нажимаю OK, я вижу пустой элемент detailViewController с несуществующим городом, мне нужно вернуться к masterView.It удаляет город из tableView, но проблема возвращается. – romada

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