关于在iOS上使用多项选择应用程序实施多项问题的建议

关于在iOS上使用多项选择应用程序实施多项问题的建议,ios,swift,swift5,Ios,Swift,Swift5,我正在尝试制作一个运动应用程序 用户创建帐户后,应用程序应询问几个问题,为用户提供适当的锻炼计划 我在QuestionHandler.sharedInstance.questions中准备好了问题,每个问题都有标题:String和选项:[String] 问题可以有不同数量的选择 我的问题是,我应该为每个问题制作一个新的视图控制器,还是有一种更干净的方法 问这个问题的解释是:每个选项都应该有自己的视图,其中有两个子视图ImageView和UIButton(将此想象为一个带有选项的按钮,我对如何实现

我正在尝试制作一个运动应用程序

用户创建帐户后,应用程序应询问几个问题,为用户提供适当的锻炼计划

我在
QuestionHandler.sharedInstance.questions中准备好了问题,每个问题都有
标题:String
选项:[String]

问题可以有不同数量的选择

我的问题是,我应该为每个问题制作一个新的视图控制器,还是有一种更干净的方法

问这个问题的解释是:每个选项都应该有自己的视图,其中有两个子视图
ImageView
UIButton
(将此想象为一个带有选项的按钮,我对如何实现它感到非常失望)

更新:

我需要一种不需要
UITableViewController
的方法

如下图所示,但我从app store找到的这个应用程序将根据问题数量调整它将生成的按钮数量(准确描述我想要的)

你可以

1个问题StableViewController,它将列出所有问题

1问题选择TableViewController,它将列出当前问题的所有选择。 (如果这两个viewcontroller具有相似的UI,您可以只使用一个viewcontroller,然后用一些动画重新加载表格视图)


1个问题选择Detailsviewcontroller,它将显示选择的详细信息。

您需要定义您有多少“类型”的问题。即,您需要多少类型的屏幕来显示所有问题

<>所以,如果我们把你所附的图像作为例子,你会看到一个屏幕。 1.简单按钮(仅文本) 2.按钮的大图像和自定义排列 3.花式按钮(带图标的多个文本选项)

无论总共有多少个问题,此类“类型”的数量肯定是有限的

您的数据模型需要指定类型,问题中答案的数据模型应该能够提供您需要为此特定问题显示的“类型”视图所需的所有信息

enum QuestionType {
    case simple
    case fancy
    case custom
}

struct Question {
    var questionTitle: String
    var type: QuestionType = .simple
    var choices: [Answer]
    var backgroundImage: UIImage?
}

protocol Answer {
    var answerText: String { get }
}

struct SimpleAnswer: Answer {
    var answerText: String
}

struct FancyAnswer: Answer {
    var answerText: String
    var descriptionText: String
    var icon: UIImage
}

struct CustomAnswer: Answer {
    var answerText: String
    var position: CGPoint
}
当然,根据您所遵循的体系结构类型,您可能应该拆分数据模型,以将域细节与UI等分离。但上面的代码只是一个示例

一旦您能够列出这些类型,您基本上需要创建这些视图控制器,然后您可以创建这些视图控制器并将其添加到或导航堆栈中,然后完成


我不知道您为什么不想使用表视图控制器。一旦您定义了这些不同的类型,表视图控制器将非常适合将来的情况。

谢谢您的回答,但我正在寻找一种看起来整洁的方式,而不需要使用UITableViewController。UITableViewController中不整洁的是什么?还有您添加的图像n在您的问题中,您可以选择collectionviewcontroller来实现它。否则,请添加一个解释“整洁”是什么意思。兄弟,我不是想从你的解决方案中拿走任何好的东西,但我所说的“整洁”是指根据问题的选择数量生成屏幕上的按钮。你可以根据选择的数量生成tableviewcell,并将按钮放在其中。请再次帮助我了解你真正想要的是什么。你的答案会更详细老实说,我觉得有道理。我对UITableViews的担心是,你不能移动单元格,它们必须堆叠起来,还有一个问题,你认为我需要使用故事板来创建视图还是需要对它们进行编码?很抱歉,这些问题很详细,但我正在尝试了解其他高级开发人员是如何思考的,并试图从中理解你可以使用这些(每种类型一个)视图控制器创建一个单独的情节提要,并从情节提要中实例化它们。您可以通过数据源将表/集合视图控制器从数据中移出,但是,您需要在不同位置使用按钮对自定义视图进行编码。