所以我需要创建一个从UIPopoverController呈现的过滤器。要过滤的不同列表转到数据管理器(模型)类并查询sqlite数据库。我正在构思的问题是如何为具有最多可重用性的多个UIPopoverControllers执行此操作。我的意思是,如果我有两个过滤器,一个用于说水果,另一个用于说蔬菜。每个人都需要以弹出窗口呈现。
我所做的是,我有一个具有通用数组的UITableView。在显示弹出窗口的类中,根据按下的过滤器,我使用UITableView和相应的水果和蔬菜列表显示popover。
对我来说棘手的部分是,复选标记的问题。由于我的列表包含“全部”,加上每个条目(如“Apple”或“Orange”),当用户选择“全部”时,不会显示任何其他复选标记。如果用户选择了apple,则取消选择all,并选中带有复选标记的apple。如果再次选择apple,则取消Apple,并重新选择All。我处理这个的方法是,在didSelectrowForIndexPath中,我查询模型类,获取每个键的YES / NO值的NSDictionary,并设置它。这也会在弹出窗口关闭然后再次显示时进行处理,然后复选标记全部出现在它们所处的最后状态中,因为模型已经更新。
所以我的两个问题是
(1)如果这个实现'ok',那么我如何为每个UITableView提供一个单独的列表?似乎由于UITableView管理一个列表,我需要创建多个UITableViews,每个过滤器一个,所以那些特定的数据管理器调用,如“All”,不会搞乱其他过滤器
(2)有更好的方法吗?我愿意接受建议!谢谢!
答案 0 :(得分:0)
您可能需要重新考虑用户界面。可能没有必要将“全部”作为一种选择,甚至可能最好将其排除在外。
我已经查看了这些过滤器在其他应用中的工作原理,我发现“全部”通常不是一个选项。当表格首次出现时,默认显示所有水果。当选择一个条目(例如“Apple”)时,仅显示苹果。取消选择“Apple”后,将再次显示所有结果。
当然,这与逻辑相反。从逻辑上讲,如果未选择任何内容,则不应显示任何内容。但是,我发现当你使用没有“全部”选项的这种过滤器时,你没有意识到逻辑上的不一致性,并且它在某种程度上非常顺利地工作,正如你所期望的那样。另一方面,当用户选择完全不同的条目时,用户体验对于“全部”进行检查和取消选中可能会显得更加麻烦。
我已经以这种方式实现了过滤器。在我看来,即使它不太符合逻辑,它也更加用户友好。
关于实现,我只是将UITableViewController子类化,并为过滤条目设置数组属性。然后我重新使用我的子类来获得不同的过滤器。