iphone - iPhone 应用程序中的 super /子类和 View

标签 iphone objective-c xcode

我有一个可以提供调查问卷的 iPhone 应用程序。调查问卷由几个问题组成。

我创建了一个 QuestionnaireViewController 类,它根据调查问卷中的问题数量加载多个 QuestionViewController 对象(这是从外部数据源提取的)。

这很好用。

该应用程序现在正在经历进一步的迭代,要求稍微复杂一些。上述原型(prototype)加载具有相同问题 View 的问题(即一种类型的问题)。然而,存在几种类型的问题(基于 slider 、文本输入等)。

所有类型的问题都共享一个属性子集:

问题有标题、id、sectionId 和问题编号

QuestionView 的数据输入方式有所不同。有些需要使用 slider 输入数据,而有些则需要文本输入。

这立即引发了父类(super class)/子类结构:

Question
  SliderQuestions
  TextInputQuestions
  etc

我的问题是:

1) 如何根据某些数据值加载 View 的特定子类?

例如

if ([questionType isEqualToString:@"slider"]) {
  //load slider view
} else if ([questionType isEqualToString:@"textInput"]) {
  //load text input view
}

我必须为每个类构建一个 View 和 ViewController 吗?我如何建模这个父类(super class)子类结构?

我的困惑在于创建 View 和 View Controller 。显然,我需要一个新 View 来处理问题特定组件,例如向一个 View 添加 slider ,向另一个 View 添加文本输入,但是如何显示共享数据(父类(super class)属性),而不必为每个 View 进行复制?

最佳答案

如果您有很多 UIView,我建议您考虑使用 tag 来标识 UIView。否则,您可以使用

比较字符串

[questionType isEqualToString:@"string"];

虽然后一种方法是更多的描述,但使用标签将允许您设置一个开关,这使得代码更有逻辑性和更紧凑(恕我直言) )。

关于iphone - iPhone 应用程序中的 super /子类和 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6737568/

相关文章:

iphone - ABTableViewCell - 添加 UIButton

iphone - 是否可以使用 UILocalNotification 而不显示消息?

iphone - UIView旋转然后移动

ios - 用于样式的 Objective-C 类别

ios - 通过导航栏查看部分内容(类似 Feedly 应用程序)

iphone - 自定义事件多久才会出现?

ios - 音频队列播放结束的准确时间

objective-c - NSOutlineView:单元格最初太窄

xcode - 如何在调试中查看 NSString 中的文本

iphone - 由于未捕获的异常 'NSUnknownKeyException' 终止应用程序 - 错误