欢迎使用工作流程!
工作流是一个用于处理iOS应用程序中复杂用户流程的库。
目录
动态工作流程旨在解决的问题是
在iOS开发中,一个视图控制器必须知道其后面的视图控制器才能传递数据。想象一下快餐应用的工作流程。
选择位置 -> 自取或外卖 -> 宴会菜单或普通菜单 -> 选择食物 -> 查看待办事项 -> 提交付款
现在想象一下,如果用户的位置通过GPS知道。您可能可以跳过第一个屏幕,并假设最近的地点,知道他们可以在待办事项屏幕上编辑它。自取或外卖可能会显示或不会显示,这取决于所选位置支持什么,同样,宴会菜单与普通菜单也是一样。
如果审查界面能提供编辑方式,那将非常不错。如果你使用 UIStoryboardSegue 帮助,这将成你的噩梦。你可能需要使用许多这类视图控制器,如果用户流程的设计发生变化,修改它们将变得相当烦恼。
解决方案
DynamicWorkflow 允许您一次指定整个工作流程的外观,然后每个视图控制器定义是否显示,要解决上述问题,可以这样做。
let workflow = Workflow()
.thenPresent(LocationsViewController.self)
.thenPresent(PickupOrDeliveryViewController.self)
.thenPresent(MenuChooserViewController.self)
.thenPresent(FoodChooserViewController.self)
.thenPresent(ReviewOrderViewController.self)
.thenPresent(SubmitPaymentViewController.self)
//from wherever this flow is launched
launchInto(workflow)
如果您想重新排序这些控制器,只需在链中移动它们的位置。您的视图控制器将自然地被定义为可以注入任何类型的工作流程中,因此如果您想按预定顺序显示屏幕,只需定义一个新的 Workflow
。