размотать Segue Xcode 10 Swift с контроллером навигации не работает - PullRequest
0 голосов
/ 04 января 2019

Я искал в Интернете ответ и следовал инструкциям в документации Apple, но безрезультатно. У меня есть два вида контроллеров. Один, который содержит список избранных элементов (FavouriteTableViewController), другой, который содержит сведения об элементе, добавляемом в список избранных (ExplorationDetailViewController).

У меня есть кнопка сохранения на панели навигации (из сцены контроллера навигации) в ExplorationDetailViewController, которую я хочу щелкнуть, чтобы начать процесс раскрутки. Я выполнил следующие шаги, но когда я нажимаю на кнопку «Сохранить», он полностью не отвечает. Я включил наиболее подходящий код для раскрутки.

Я создал функцию prepareforsegue в ExplorationResultViewController, откуда я буду передавать данные для изображения и метку в другой ViewController в рамках процесса раскрутки

class ExplorationResultViewController: UIViewController {
    var exploration_result: Favourites?
    @IBOutlet weak var ExplorationLabel: UILabel!
    @IBOutlet weak var ExplorationPhoto: UIImageView!

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

        // Pass the selected object to the new view controller.
        super.prepare(for: segue, sender: sender)


        let photo = ExplorationPhoto.image
        let name = ExplorationLabel.text ?? ""

        exploration_result = Favourites(name: name, photo: photo)
    }

Затем в FavouriteTableViewController я добавил метод unwindtoHere, который добавляет изображение и метку в список.

class FavouritesTableViewController: UITableViewController {

    // MARK: Properties
    var favourites = [Favourites]()

    // MARK: Actions
    @IBAction func unwindToFavouriteList(sender: UIStoryboardSegue) {
        if let sourceViewController = sender.source as? ExplorationResultViewController, let favourite = sourceViewController.exploration_result{
            // Add a new meal.
            let newIndexPath = IndexPath(row: favourites.count, section: 0)
            favourites.append(favourite)
            tableView.insertRows(at: [newIndexPath], with: .automatic)

        }

Затем, войдя в свою раскадровку, я удерживаю и перетаскиваю кнопку Сохранить в ExplorationDetailViewController и подключаю ее к элементу выхода в верхней части сцены. Мой метод раскрутки появляется во всплывающем окне как «unwindToFavouriteListWithSender». Я выбираю это.

Мне следует идти сейчас, но когда я запускаю симулятор и нажимаю кнопку Сохранить, это абсолютно не отвечает. См. StoryBoard Design Пожалуйста, помогите

1 Ответ

0 голосов
/ 06 января 2019

Исходя из ваших комментариев, я предполагаю, что проблема в том, что в иерархии контроллеров представления нет FavouritesTableViewController в момент нажатия кнопки Сохранить. Вы не можете развернуть к чему-то, что не уже присутствует: «развернуть» означает перейти назад к чему-то, что было создано ранее и остается присутствует над текущим контроллером представления в иерархии контроллера представления.

Например, допустим, у нас есть

UINavigationController -> (root view controller) -> FavouritesTableViewController
    -> (push) ExplorationResultViewController

Теперь мы можем откатиться от контроллера Exploration к контроллеру Favorites, потому что контроллер Favorites уже находится в иерархии до контроллера Exploration. Похоже, вы не цените этот факт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...