0

我有一个简单的问题,我希望这里有更多经验的人可以提供一些启示。

我目前正在使用 AddressBookUI 框架(基本上是 ABPeoplePickerNavigationController)来显示联系人列表,用户可以从中选择一个并向下钻取到联系人详细信息视图。很普通的东西,世界上什么都没有。

但是,一旦从 tableView 列表中选择联系人,我想修改搜索栏的颜色、部分标题和联系人视图的背景。

似乎无论我尝试什么(覆盖 UINavigationController 方法,在 viewLoaded 中加载视图时直接设置属性,循环遍历单个联系人视图中的子视图,迭代地将 backgroundColor 设置为 clearColor 并将底层视图设置为背景图像等)更改不坚持。标题/搜索栏始终为蓝色,单个联系人视图中的背景始终为细条纹蓝色/白色背景(在所有子视图的 clearColor 迭代设置的情况下,我对此行为非常不稳定,它只是感觉就像一个丑陋的黑客)。

有谁知道这是如何完成的?我怀疑这与视图是模态视图这一事实有关。有什么见解吗??

我真的不想访问较低级别的 c API。必须以这种方式解决它在本地化方面会一团糟,因为我不知道如何在这么多非罗马字母语言中对联系人列表和 tableView 索引进行排序(如果我设法保留的话,我可以搭便车使用基于可可的框架)。另外,我很确定苹果对加载/处理联系人列表的优化无论如何都会胜过我自己的。据我所知,Apple 可以直接访问 AB sqlite 数据库,而我将不可避免地被迫从另一个抽象级别访问它......(基于 c 的 API)

不介意使用 c API 推出我自己的地址簿视图(这是荒谬的过度杀伤力,因为只是更改一些颜色和背景的所有数据管理开销......但是哦)如果你们可以另外指出我转向多语言/字母识别排序选项(显然,在坚持使用 AddressBookUI 框架的同时修改颜色+背景会更好)。

任何见解都非常感谢!

太感谢了,

何塞

4

1 回答 1

1

祝你好运。您正在挖掘该 API 的未公开部分,您可能无法获得您想要的结果。这主要是反复试验,由于您没有使用已发布的 API,未来的操作系统升级可能会破坏您的应用程序等。

Apple 更喜欢在 UI 某些部分的外观和感觉上保持一致性。地址簿界面就是其中之一。

如果您只是希望您的应用程序匹配该部分,我不会担心。如果有一些硬性要求,并且您想远离未发布的 API,那么您可能会推出自己的解决方案,正如您已经提到的,对于如此小的外观更改,这似乎需要做很多工作。

于 2009-07-12T00:36:33.260 回答