ResearchKit:根据先前的响应更改选择
ResearchKit: Change choices based on previous response
我正在使用 ResearchKit 开发调查应用程序,我需要根据之前的回复更改下一个问题的值。示例:
Question 1: How many cars do you have?
- 1 Car
- 2 Cars
- 3 Cars
- 4 Cars
- xx Cars
Question 2: Which is your favorite car?
- car number 1
- car number 2
- car number 3
- car number 4
- car number XX
问题 2 的选项数量将基于问题 1 中选择的值。
知道我该怎么做吗?
我找到了一个解决方案,虽然在您提交 ViewController 后无法创建新步骤,但可以更新步骤的 answerFormat 使用一个新数组
for(ORKQuestionStep* step in ((ORKOrderedTask*)self.task).steps) {
if([step.answerFormat isKindOfClass:[ORKValuePickerAnswerFormat class]]) {
step.answerFormat = [[ORKValuePickerAnswerFormat alloc] initWithTextChoices:arrayOfChoices];
}
}
看看ORKNavigableOrderedTask
。 (有关用法示例,请参阅 ORKTest
。)
基本上,您要为第一个问题的所有不同选项定义单独的步骤,然后根据其答案有条件地导航到适当的步骤。
您还可以使用:
func step(after step: ...) and
func step(before step: ...)
使用这些,您可以自己即时创建步骤。
但是,您也会失去一些其他功能,并且必须自己管理所有导航。
我正在使用 ResearchKit 开发调查应用程序,我需要根据之前的回复更改下一个问题的值。示例:
Question 1: How many cars do you have?
- 1 Car
- 2 Cars
- 3 Cars
- 4 Cars
- xx Cars
Question 2: Which is your favorite car?
- car number 1
- car number 2
- car number 3
- car number 4
- car number XX
问题 2 的选项数量将基于问题 1 中选择的值。
知道我该怎么做吗?
我找到了一个解决方案,虽然在您提交 ViewController 后无法创建新步骤,但可以更新步骤的 answerFormat 使用一个新数组
for(ORKQuestionStep* step in ((ORKOrderedTask*)self.task).steps) {
if([step.answerFormat isKindOfClass:[ORKValuePickerAnswerFormat class]]) {
step.answerFormat = [[ORKValuePickerAnswerFormat alloc] initWithTextChoices:arrayOfChoices];
}
}
看看ORKNavigableOrderedTask
。 (有关用法示例,请参阅 ORKTest
。)
基本上,您要为第一个问题的所有不同选项定义单独的步骤,然后根据其答案有条件地导航到适当的步骤。
您还可以使用:
func step(after step: ...) and
func step(before step: ...)
使用这些,您可以自己即时创建步骤。 但是,您也会失去一些其他功能,并且必须自己管理所有导航。