从自身打开新的ViewController

问题描述 投票:0回答:2

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

我认为这不是一个好主意。您正在将UIViewControllers堆叠在另一个之上。一个更干净的解决方案是为您的viewController提供数据源。让按钮消息显示数据源,更新数据,然后重新显示viewController。


0
投票

没有银弹规则可以判断这是否是一种好方法。无论如何,这是一个有效的代码,取决于它的行为方式。

基于当前方法,将为每个问题创建一个独立的视图控制器,从而将其添加到导航堆栈中;如果您认为每个视图控制器都应具有自己的UI行为(例如),则是个好主意,由于它们是分开的,因此易于维护。

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

© www.soinside.com 2019 - 2024. All rights reserved.