Ios 创建基于步骤的视图控制器流

Ios 创建基于步骤的视图控制器流,ios,swift,Ios,Swift,因此,如果你看提供的图片。我想知道实现这样一个流的最佳模式是什么。我可以把一堆视图控制器串在一起,但我觉得我重复的太多了。我曾尝试制作一个可重用的xib,但即使如此,我最终还是不得不为每个ViewController更新步骤,并添加内容/输入类型。我至少不会重复故事板中的所有约束 所以这些都是这个屏幕的公共组件。它们自然会根据步骤持有不同的内容。我还有一个后退按钮。我有一个不同输入类型的工厂,它将在这个xib中生成渲染自定义视图。我想知道是否有人做过类似的设计,他们最好的实现方式是什么 注意:我

因此,如果你看提供的图片。我想知道实现这样一个流的最佳模式是什么。我可以把一堆视图控制器串在一起,但我觉得我重复的太多了。我曾尝试制作一个可重用的xib,但即使如此,我最终还是不得不为每个ViewController更新步骤,并添加内容/输入类型。我至少不会重复故事板中的所有约束

所以这些都是这个屏幕的公共组件。它们自然会根据步骤持有不同的内容。我还有一个后退按钮。我有一个不同输入类型的工厂,它将在这个xib中生成渲染自定义视图。我想知道是否有人做过类似的设计,他们最好的实现方式是什么


注意:我可以分享代码,但目前它非常重复,而且我也有很多故事板/XIB,所以我觉得分享起来很有必要。这幅画可能更容易理解

将视图控制器模板放入独立的nib文件中。创建UIViewController的自定义子类,该子类使用该nib文件并了解如何从向导的一个步骤中显示数据。在运行时创建子类的实例,并为其提供每个步骤的数据。您可以一次完成这些操作,例如,您可以将它们堆叠到UIPageView中,或者如果您想以其他方式呈现它们,您可以一次执行一个步骤。

您可以使用故事板中的单个视图控制器来完成此操作

在我的示例中创建一个名为 视图控制器。 将视图控制器添加到情节提要,并将其自定义类名设置为刚创建的类。 将视图控制器嵌入带有视图的导航控制器中 在情节提要中选择控制器,选择编辑器>嵌入> 导航控制器。 在情节提要中的视图控制器上创建按钮。 创建从按钮到视图控制器的序列-是的,与包含按钮的视图控制器相同!要执行此操作,请将控件从按钮拖动到视图控制器。给segue一个标识符,例如nextStep。 每次点击按钮时,它都会切换到同一视图控制器的新实例。你可以想重复多少次就重复多少次。因为您位于导航控制器中,所以可以轻松地向后移动

当然,要做任何有趣的事情,您的视图控制器类将需要跟踪您所处的步骤、管理状态、确定何时到达终点,等等

下面是视图控制器的一个简单实现,它在前进时增加步骤数:

class ViewController: UIViewController {

    var stepNumber = 1

    override func viewDidLoad() {
        super.viewDidLoad()
        self.title = "Step \(stepNumber)"
    }
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "nextStep" {
            if let destination = segue.destination as? ViewController {
                destination.stepNumber = stepNumber + 1
            }
        }
    }
} 

你试过谷歌搜索uipageviewcontroller吗?大量的教程显示了需要做什么。有一些代码示例…我有。我确实在另一个流中使用UIPageViewController,但我觉得它并不能完全满足我的需要。我正在考虑为这个做一个类似的组件。