2009-10-06 138 views
11

我想实现一个类似于Apple自己的Contacts应用程序的详细视图的视图,它显示名称,电话号码,备注等及其编辑模式。iPhone Contact应用程序的详细信息如何实现

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

回答

11

联系人详细信息屏幕实际上很容易模仿。

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

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

对于标题,你需要一个UIImageView和一个UILabel,对于页脚你需要一些UIButtons。您可以在InterfaceBuilder中创建一个UITableViewCell的子视图,并将其视为其他视图。您可以使用NSBundle从尚未加载的其他xib加载视图。

另一种方法是在没有xib的情况下在运行时动态生成UI小部件。这一切都取决于你希望管理什么(代码或xibs),对我来说,无论哪种方式似乎都有相同的努力量。如果你还没有,我强烈建议你通读table view programming guide

0

您可以使用F-Script进行探索。浏览地址簿时,从F脚本浏览器获取screenshot。基本上,它看起来像很多自定义视图都从NSView继承。

要做到这一点你自己:

  1. 下载从上面
  2. 链接F-脚本按照在额外的说明/ F-脚本Anywhere目录用于连接到通讯簿
  3. 选择F-脚本 - >从地址簿菜单中打开对象浏览器
  4. 单击选择视图
  5. 突出显示您想探索的地址簿视图并单击它。
  6. 导航至您心中的内容。
+0

F-Script是否适用于iPhone应用程序? – Boon 2009-10-07 00:46:37

+0

人。尽管MobileAddressBook的iPhone Simulator版本是一个动态可执行文件,但在gdb中加载FScript包似乎不起作用。 – nall 2009-10-07 02:25:56

1

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

3

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

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

0

只是为了显示你的方式,你也可以继承的UITableViewController为目的,然后才能实现类似的联系人的编辑模式应用程式,你会:

  1. 添加属性来存储一个参考取消按钮。

    var cancelButton: UIBarButtonItem! 
    
  2. 在viewDidLoad中(),导航栏添加编辑按钮右侧的项目,并准备取消按钮后,它添加为左边的项目。

    self.navigationItem.rightBarButtonItem = self.editButtonItem() 
    self.cancelButton = UIBarButtonItem(title: "Cancel", style: .Plain, target: self, action: "cancelPressed:") 
    
  3. 覆盖setEditing(_:动画:)方法来设置你的细胞编辑/预览模式和显示/隐藏取消导航栏上的按钮,根据编辑的标志。

    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 :)方法,在编辑模式下配置行的风格和缩进。

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

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

我知道这个问题是很老,但有人可能会发现它有用。

相关问题