iPhone Contact应用程序的详细信息视图是如何实现的

我想实现一个类似于苹果自己的联系人应用程序的详细视图,在那里显示名称,电话号码,备注等及其编辑模式的视图。

你能剖析整个观点是如何完成的吗? 用UITableView或UIScrollView完成该视图吗?

联系人详细信息屏幕实际上是相当简单的模仿。

从一个UITableView开始,并提供一个UITableViewDataSource和UITableViewDelegate。 您需要提供所有要显示的数据的部分。 这意味着1为自定义标题,1为自定义页脚(button/操作),约6左右的数据部分(一个电话号码部分,另一个电子邮件地址,等等)

在每个部分的内部,需要从您的数据源提供许多行来指示该部分有多less数据。 对于每一行,UITableViewCell可以用来显示实际的联系人数据(传真标签/传真号码值等)。 如果你喜欢,你可以喜欢,但似乎并不需要。 对于铃声等内容,您需要指定披露指标。

对于标题你需要一个UIImageView和一个UILabel,对于页脚你需要一些UIButtons。 您可以在InterfaceBuilder中创build一个UITableViewCell的子元素,并在里面包含这些视图,并像其他任何东西一样连线。 您可以使用NSBundle从尚未加载的其他xib加载视图。

另一种方法是在没有xib的情况下在运行时dynamic生成UI小部件。 这一切都取决于你想要pipe理什么(代码或xibs),对我来说,似乎任何一种方式的努力。 如果您还没有,我强烈build议您阅读桌面视图编程指南 。

或者你可以使用苹果自己的ABPersonViewController:

http://developer.apple.com/library/ios/#documentation/AddressBookUI/Reference/ABPersonViewController_Class/Reference/Reference.html

allowsEditing属性指定用户是否可以编辑人员的信息。

我的实现使用带有自定义标题的UITableView(对于“添加照片”和编辑名称等价物)和一个自定义页脚(使用UISegmentedControl hack作为一个大button)用于“删除”等效项。

你可以使用F-Script来探索这个。 这是浏览地址簿时F-Script浏览器的屏幕截图 。 基本上,它看起来像很多自定义视图都从NSViewinheritance。

要自己做到这一点:

  1. 从上面的链接下载F-Script
  2. 按照extras / F-Script Anywhere目录中的说明连接到地址簿
  3. 从地址簿菜单中selectF脚本 – >打开对象浏览器
  4. 点击select视图
  5. 突出显示您想探索的地址簿视图,然后单击它。
  6. 导航到你的心脏的内容。

为了向您展示,您可以为此目的inheritanceUITableViewController,然后为了实现与联系人应用类似的编辑模式,您可以:

  1. 添加一个属性来存储对取消button的引用。

    var cancelButton: UIBarButtonItem! 
  2. 在ViewDidLoad()中,将编辑button添加到导航栏作为一个正确的项目,并准备取消button稍后将其添加为左项目。

     self.navigationItem.rightBarButtonItem = self.editButtonItem() self.cancelButton = UIBarButtonItem(title: "Cancel", style: .Plain, target: self, action: "cancelPressed:") 
  3. 覆盖setEditing(_:animated :)方法来设置编辑/预览模式的单元格,并根据编辑标志显示/隐藏导航栏上的取消button。

     override func setEditing(editing: Bool, animated: Bool) { super.setEditing(editing, animated: true) if editing { // Set up cells and prepare for Edit mode here self.navigationItem.setLeftBarButtonItem(self.cancelButton, animated: true) } else { // Set up cells and prepare for Preview mode here self.navigationItem.setLeftBarButtonItem(nil, animated: true) } } 
  4. 在编辑模式下,重写UITableViewDelegate的tableView(_:editingStyleForRowAtIndexPath :)和tableView(_:shouldIndentWhileEditingRowAtIndexPath :)方法来configuration行样式和缩进。

  5. 实施cancelPressed方法退出编辑模式时按下取消。

     func cancelPressed(button: UIBarButtonItem) { self.setEditing(false, animated: true) } 

我知道这个问题很老,但有人可能会觉得有帮助。