0

我发布此消息是为了获得有关最佳方法的建议。

我正在制作一个程序,用户可以在其中选择他们想要使用的字段。该列表以表格的形式出现在下一个屏幕上。根据所选字段,textFields 中的 placeHolder 会发生变化。因此,我必须跟踪选定的字段。

到目前为止,我已经考虑了以下方法:

  1. 两个数组。一个存储单元格上的标签列表,第二个数组存储 1/0 值。1:选中字段,0:未选中。因此,我将不得不从数组 1 中获取字段的名称,以及是否从第二个中选择它。

  2. 一个包含 1/0 的数组,指示该字段是否被选中。我遍历数组以确定是否应该显示哪些 placeHolders。

  3. NSDictionary:它将包含对象:“字段名称”和键:1 或 0。

我认为这些选项中的任何一个都不是好的编程习惯,因为有很多 if 和 else 语句,而且代码中存在大量重复。

您能否建议解决此问题的最佳方法?

谢谢!

4

2 回答 2

0

我想你想要的是弄清楚哪一个被选中了。您可以使用一个数字来标记选择了哪一个。
假设有 3 个字段:field0 field1 field2和 binary 中的数字000。一旦field1被选中,然后将数字标记为010。将此数字传递到下一个屏幕,然后您可以将&其用于每个文件。
对于field0,您可能会010 & 000得到一个结果0,即field0未选择。
对于field1,您可能会010 & 010得到一个结果,即没有选择0哪个鬃毛field1
对于field2,您可能会010 & 100得到一个未选择0鬃毛的结果。field2

于 2012-11-21T03:59:28.773 回答
0

不知道为什么你认为有很多 if/else 语句。您可以使用字典数组来完成,其中每个字典包含两个键:字段名称和选定。Fieldname 是 NSString,选择的是 NSNumber 包装一个布尔值。然后在你的 cellForRowAtIndexPath 你有类似的东西:

NSDictionary *cellData = dataArray[indexPath.row];
cell.textLabel.text = cellData[@"field_name"];
if ([[cellData@["selected"] boolValue] == YES) { ... do whatever you do when the cell is selected, like add a checkmark ... }

您可能还考虑制作一个自定义数据类来保存每个单元格的数据。您可以为标签名称和选定属性创建属性(这将避免必须包装和打开 NSNumber 来表示是/否)。您可以在自定义类上定义根据所选内容返回正确标签的方法。然后,您只需创建这些自定义对象的数组。

于 2012-11-20T22:37:00.160 回答