问题 如何实现iPhone Contact应用程序的详细信息


我想实现类似于Apple自己的联系人应用程序的详细视图的视图,其中显示名称,电话号码,注释等及其编辑模式。

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


9070
2017-10-06 23:33


起源



答案:


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

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

在每个部分的内部,需要从数据源提供许多行,以指示该部分的数据量。对于每一行,UITableViewCell可用于显示实际的联系人数据(传真标签/传真号码值等)。如果你愿意,你可以获得幻想,但似乎没有必要。对于像铃声这样的东西,您需要指定披露指标。

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

另一种方法是在运行时动态生成UI小部件而不使用xib。这一切都取决于你宁愿管理什么(代码或xibs),对我来说,无论是哪种方式似乎都是相同的努力。我强烈建议你阅读 表视图编程指南 如果你还没有。


11
2018-03-05 18:18





或者您可以使用Apple自己的ABPersonViewController:

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

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


3
2018-04-01 12:47





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


1
2018-03-05 18:02





您可以使用 F-脚本 探索这个。这是一个 截图 浏览地址簿时从F脚本浏览器。基本上,它看起来像很多自定义视图都从NSView继承。

要自己做这件事:

  1. 从上面的链接下载F脚本
  2. 按照extras / F-Script Anywhere目录中的说明附加到通讯簿
  3. 从地址簿菜单中选择F脚本 - >打开对象浏览器
  4. 单击选择视图
  5. 突出显示要浏览的通讯簿视图,然后单击它。
  6. 浏览您心中的内容。

0
2017-10-07 00:20



F-Script能为iPhone应用程序工作吗? - Boon
人力资源管理。尽管Mobile SimBook的iPhone模拟器版本是动态可执行文件,但在gdb中加载FScript包似乎不起作用。 - nall


答案:


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

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

在每个部分的内部,需要从数据源提供许多行,以指示该部分的数据量。对于每一行,UITableViewCell可用于显示实际的联系人数据(传真标签/传真号码值等)。如果你愿意,你可以获得幻想,但似乎没有必要。对于像铃声这样的东西,您需要指定披露指标。

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

另一种方法是在运行时动态生成UI小部件而不使用xib。这一切都取决于你宁愿管理什么(代码或xibs),对我来说,无论是哪种方式似乎都是相同的努力。我强烈建议你阅读 表视图编程指南 如果你还没有。


11
2018-03-05 18:18





或者您可以使用Apple自己的ABPersonViewController:

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

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


3
2018-04-01 12:47





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


1
2018-03-05 18:02





您可以使用 F-脚本 探索这个。这是一个 截图 浏览地址簿时从F脚本浏览器。基本上,它看起来像很多自定义视图都从NSView继承。

要自己做这件事:

  1. 从上面的链接下载F脚本
  2. 按照extras / F-Script Anywhere目录中的说明附加到通讯簿
  3. 从地址簿菜单中选择F脚本 - >打开对象浏览器
  4. 单击选择视图
  5. 突出显示要浏览的通讯簿视图,然后单击它。
  6. 浏览您心中的内容。

0
2017-10-07 00:20



F-Script能为iPhone应用程序工作吗? - Boon
人力资源管理。尽管Mobile SimBook的iPhone模拟器版本是动态可执行文件,但在gdb中加载FScript包似乎不起作用。 - nall


只是为了向您展示,您可以为此目的创建UITableViewController的子类,然后为了实现类似于Contacts应用程序的编辑模式,您将:

  1. 添加属性以存储对“取消”按钮的引用。

    var cancelButton: UIBarButtonItem!
    
  2. 在ViewDidLoad()中,将编辑按钮添加到导航栏作为右项,并准备取消按钮以稍后将其添加为左项。

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

    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)
    }
    

我知道这个问题很老了,但是有人可能觉得它很有用。


0
2017-12-27 20:20