从自身打开新的 ViewController

Open new ViewController from itself

我有一个视图控制器,我在其中向用户提出多项选择题。我的想法是跳到下一个问题,所以我想再次对每个新问题调用相同的 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)
} 

我认为这不是个好主意。您正在将 UIViewController 一个堆叠在另一个之上。一个更简洁的解决方案是为您的 viewController 提供数据源。让按钮向数据源发送消息、更新数据并重新显示您的 viewController.

没有灵丹妙药来判断它是否是一个好方法。无论如何这是一个有效的代码,这取决于它应该如何表现。

基于当前的方法,将为添加到导航堆栈的每个问题创建一个独立的视图控制器;如果您认为每个视图控制器都应该有自己的 UI 行为(例如),这是个好主意,因为它们是分开的,所以维护起来会很容易。

另一种选择是通过更改问题并重新加载 UI 来继续处理相同的视图控制器。同样,我不会确认这是一种更好的方法,但至少它是一种可用的方法。