Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Объедините последовательности с UINavigationController

Автор вопроса: AlexОтветов: 1

Я создаю мобильное приложение, которое отображает статистику из нескольких API. Приложение показывает разные значения в зависимости от активного API. Во время выполнения пользователь может выбрать, для какого API отображать значения. Однако значения всегда отображаются в одном и том же целевом контроллере представления.

UINavigationController используется, и я хотел бы отложить его для навигации и пользовательского интерфейса навигации, если это возможно, даже несмотря на то, что UITableViewControllers поддерживает панели навигации.

См. изображение дизайна раскадровки в конце вопроса.

Среда: iOS 9/Swift 2.2/XCode 7

  1. Во время выполнения пользователь выберет контроллер представления Choice из контроллера Select. Как правильно перейти от одного из контроллеров представления выбора через UIBarButton "Готово" к целевому контроллеру? Целевой контроллер не меняется.

  2. Должен ли я программно определять кнопку правой панели как "Готово" для каждого контроллера, встроенного в UINavigationController?

     class UIViewController: UITableViewController {
         override func viewWillAppear( animated: Bool) {
              super.viewWillAppear( animated)
              self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Plain, target: self, action: nil)
         }
    }
    

Макет раскадровки

iosswiftuinavigationcontrollersegueuinavigationitem

Ответы

Ответ 1 · рейтинг 1 · NonCreature0714

Правильный способ вернуться к корневому контроллеру представления:

class MyViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.plain, target: self, action: #selector(MyViewController.done))
    }


    func done() {
        if let navigationController = self.navigationController {
            navigationController.popToRootViewController(animated: true)
        }
    }
}

Вам нужно программно добавить кнопку "Готово"; но это более просто, чем это. Просто выберите контроллер корневого представления и скопируйте/вставьте класс в раскадровке. Используйте свои переходы, чтобы поместить правильное представление в стек UINavigation.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы