所以,如果你看一下提供的图片。我想知道实现这样的流程的最佳模式是什么。我可以将一堆ViewControllers串在一起,但我觉得我在重复自己的方式太多了。我尝试过制作一个可重用的xib,但即便如此,我仍然需要更新每个ViewController
的步骤并添加内容/输入类型。我至少不要重复我的故事板中的所有约束。
所以这些都是这个屏幕的常见组件。根据步骤,他们自然会拥有不同的内容。我也有一个后退按钮。我有一个不同输入类型的工厂,它将在这个xib中生成渲染自定义视图。我想知道是否有人做过类似的设计,他们最好的实现方式是什么?
注意:我可以共享代码,但目前它非常重复,而且我还有很多故事板/ xib,所以我认为分享很多。图片可能更容易理解。
答案 0 :(得分:1)
您可以使用故事板中的单个视图控制器执行此操作。
每次点击按钮,它都会转到同一个视图控制器的新实例。您可以根据需要重复多次。因为您在导航控制器中,所以您可以轻松地后退。
当然,要做任何有趣的事情,你的视图控制器类需要跟踪你所处的步骤,管理状态,确定你何时到达终点等等。
以下是视图控制器的一个简单实现,它会在您前进时递增步骤编号:
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
}
}
}
}
答案 1 :(得分:0)
将视图控制器模板放入独立的nib文件中。创建UIViewController的自定义子类,该子类使用该nib文件并了解如何从向导的一个步骤显示数据。在运行时创建子类的实例,并为每个步骤提供数据。您可以同时执行此操作(例如,您可以将它们堆叠到UIPageView
中),或者如果您想以其他方式呈现它们,则可以一次执行一步。