iOS Передача данных обратно из viewController2 в viewController 1 с presentModalSegue

У меня есть viewController1, который делает модальный переход к моему viewController2, но

viewController2 встроен в контроллер навигации

потому что мне нужна навигационная панель там.

Я реализовал протокол для отправки данных обратно из viewController2 в viewController1, но он не работает. Вот мой код:

protocol writeValueBackDelegate {
    func writeValueBack(value: String)
}

class viewController1: UITableViewController, writeValueBackDelegate {
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "SelectAddress"{
            if let dest = segue.destinationViewController as? MapAddressViewController{
                dest.delegate = self
            }
        }

    }
}

На viewController2 у меня есть это:

class viewController2: UIViewController{
    var delegate: writeValueBackDelegate?

@IBAction func TaskOneClick(sender: AnyObject) {
        delegate?.writeValueBack(txtAddress!.text!)
        self.navigationController?.popViewControllerAnimated(true)
    }
}

Я не знаю почему, но он функционирует, только если я удаляю контроллер навигации из моего secondviewController и делаю переход от viewController 1 к viewController 2 напрямую, но мне нужен контроллер навигации, чтобы показать панель навигации.

Вы знаете, почему это происходит? или почему я делаю плохо.

Ответы на вопрос(2)

Ваш ответ на вопрос