我想实现一个类似于Apple自己的Contacts应用程序的详细视图的视图,它显示名称,电话号码,备注等及其编辑模式。iPhone Contact应用程序的详细信息如何实现
你能剖析整个视图是如何完成的吗?该视图是使用UITableView还是UIScrollView完成的?
我想实现一个类似于Apple自己的Contacts应用程序的详细视图的视图,它显示名称,电话号码,备注等及其编辑模式。iPhone Contact应用程序的详细信息如何实现
你能剖析整个视图是如何完成的吗?该视图是使用UITableView还是UIScrollView完成的?
联系人详细信息屏幕实际上很容易模仿。
从一个UITableView开始,并提供一个UITableViewDataSource和UITableViewDelegate。您需要为所有想要提供的数据提供部分。这意味着1为自定义标题,1为自定义页脚(按钮/操作),约6个部分为数据(电话号码的一个部分,另一个电子邮件地址等)
在每个部分的内部,需要从数据源提供许多行以指示该部分有多少数据。对于每一行,可使用UITableViewCell显示实际联系人数据(传真标签/传真号码值等)。如果你喜欢,你可以很喜欢,但似乎并不需要。对于铃声等内容,您需要指定披露指标。
对于标题,你需要一个UIImageView和一个UILabel,对于页脚你需要一些UIButtons。您可以在InterfaceBuilder中创建一个UITableViewCell的子视图,并将其视为其他视图。您可以使用NSBundle从尚未加载的其他xib加载视图。
另一种方法是在没有xib的情况下在运行时动态生成UI小部件。这一切都取决于你希望管理什么(代码或xibs),对我来说,无论哪种方式似乎都有相同的努力量。如果你还没有,我强烈建议你通读table view programming guide。
您可以使用F-Script进行探索。浏览地址簿时,从F脚本浏览器获取screenshot。基本上,它看起来像很多自定义视图都从NSView继承。
要做到这一点你自己:
我的实现对于“删除”等价物使用带自定义标题的UITableView(用于“添加照片”和编辑名称等效项)和自定义页脚(使用UISegmentedControl hack作为大按钮)。
或者你可以使用苹果自己的ABPersonViewController:
的allowsEditing属性指定用户是否可以编辑人的信息。
只是为了显示你的方式,你也可以继承的UITableViewController为目的,然后才能实现类似的联系人的编辑模式应用程式,你会:
添加属性来存储一个参考取消按钮。
var cancelButton: UIBarButtonItem!
在viewDidLoad中(),导航栏添加编辑按钮右侧的项目,并准备取消按钮后,它添加为左边的项目。
self.navigationItem.rightBarButtonItem = self.editButtonItem()
self.cancelButton = UIBarButtonItem(title: "Cancel", style: .Plain, target: self, action: "cancelPressed:")
覆盖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)
}
}
覆盖的UITableViewDelegate的的tableView(_:editingStyleForRowAtIndexPath :)和的tableView(_:shouldIndentWhileEditingRowAtIndexPath :)方法,在编辑模式下配置行的风格和缩进。
实施cancelPressed方法以在按下取消时退出编辑模式。
func cancelPressed(button: UIBarButtonItem) {
self.setEditing(false, animated: true)
}
我知道这个问题是很老,但有人可能会发现它有用。
F-Script是否适用于iPhone应用程序? – Boon 2009-10-07 00:46:37
人。尽管MobileAddressBook的iPhone Simulator版本是一个动态可执行文件,但在gdb中加载FScript包似乎不起作用。 – nall 2009-10-07 02:25:56