2016-09-24 3 views
1

Фон в то, чего я пытаюсь достичь:Unwind segue, вмешиваясь в шоу segue

MainViewController представляет TableVC. Я коснусь камеры, чтобы представить DetailVC. С возможностью отклонения с помощью doneBarButton в навигационных барах на TableVC или DetailVC.

Все элементы doneBarButton привязаны к MainViewController, поэтому я думаю, что независимо от того, какие диспетчеры представлений будут уволены в MainViewController.

То, что я испытываю, является крахом при нажатии на мой doneBarButton TableVC, но не на doneBarButton моего DetailVC. Потому что все они коренятся в MainViewController через интерфейс строитель я не думаю, что я должен иметь код ничего в методе prepareForSegue в TableVC в однако в случае переключатель для идентификатора находится в центре внимания и отладки консоль выводит

"fatal error: unexpectedly found nil while unwrapping an Optional value"

Я m не совсем уверен, где точно определить, что нужно исправлять, будь то в конструкторе интерфейса или что-то в методе prepareForSegue.

override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
{ 
    switch segue.identifier! // Line highlighted with error in debug console 
    { 
    case "toDetailVC": // Properly presents detailVC through a cell being tapped 

    default: 
    break 
    } 
} 

ответ

1

Вы не присвоен идентификатор вашему размотки Segue, поэтому свойство nil. Поскольку вы принудительно разворачиваете его с помощью !, он падает.

Чтобы устранить эту проблему, найти разматывания SEGUE в Document Outline зрения. Выберите его, а затем в контролера атрибутов , дайте segue идентификатор.

Xcode interface showing unwind segue ID


Альтернативное решение:

Так как вы, вероятно, не заботиться о размотки идентификатора, вы могли бы также решить проблему, выбирая безопасный способ разворачивать segue.identifier:

switch segue.identifier ?? "" { 

Это использование nol coalescing o perator?? заменяет неназначенные идентификаторы пустой строкой.

+0

Ничего себе, это было очень просто, мне очень нравится использование оператора коалесценции nil! Не думал, что мне нужен идентификатор, поэтому почему я его оставил, рад, что оператор держит код чистым и кратким! – lifewithelliott