Откройте новый ViewController от себя - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть контроллер представления, где я задаю пользователю вопрос с несколькими вариантами ответов. Идея состоит в том, чтобы перейти к следующему вопросу, поэтому я хотел бы снова вызывать один и тот же viewcontroller (newsViewController) для каждого нового вопроса, просто меняя переменный вопрос. У меня есть кнопка btnNetQuestionAction. Я попробовал это решение, и оно отлично работает. это хороший подход? Есть идея получше?

@IBAction func btnNetQuestionAction(_ sender: Any) {
    question = question + 1
    if question > total {
        question = total
    }
    UserDefaults.standard.set(questao,forKey: "questao")
    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let vc = storyboard.instantiateViewController(withIdentifier: "newsViewController") as UIViewController
    navigationController?.pushViewController(vc,animated: true)
} 

Ответы [ 2 ]

0 голосов
/ 07 апреля 2020

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

На основе текущего подхода для каждого вопроса будет создан автономный контроллер представления, добавленный в стек навигации; Это хорошая идея, если вы считаете, что каждый контроллер представления должен иметь свое собственное поведение пользовательского интерфейса (например), его будет легко поддерживать, поскольку они разделены.

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

0 голосов
/ 07 апреля 2020

Не думаю, что это отличная идея. Вы складываете UIViewControllers один поверх другого. Гораздо более чистым решением было бы иметь источник данных для вашего viewController. Попросите кнопку сообщить источник данных, обновите данные и перезапустите ваш viewController.

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