[英]How is iPhone Contact app's detail View implemented
我想實現類似於Apple自己的聯系人應用程序的詳細視圖的視圖,其中顯示名稱,電話號碼,注釋等及其編輯模式。
你能剖析整個觀點是如何完成的嗎? 該視圖是使用UITableView還是UIScrollView完成的?
聯系人詳細信息屏幕實際上很容易模仿。
從UITableView開始,並為其提供UITableViewDataSource和UITableViewDelegate。 您需要為要呈現的所有數據提供部分。 這意味着1表示自定義頁眉,1表示自定義頁腳(按鈕/操作),大約6個左右的數據部分(一個部分用於電話號碼,另一個部分用於電子郵件地址,等等)
在每個部分的內部,需要從數據源提供許多行,以指示該部分的數據量。 對於每一行,UITableViewCell可用於顯示實際的聯系人數據(傳真標簽/傳真號碼值等)。 如果你願意,你可以獲得幻想,但似乎沒有必要。 對於像鈴聲這樣的東西,您需要指定披露指標。
對於標題,您需要一個UIImageView和一個UILabel,對於頁腳,您需要一些UIButtons。 您可以在InterfaceBuilder中創建UITableViewCell的子級,並在其中包含這些視圖,並將其連接起來。 您可以使用NSBundle從尚未加載的其他xib加載視圖。
另一種方法是在運行時動態生成UI小部件而不使用xib。 這一切都取決於你寧願管理什么(代碼或xibs),對我來說,無論是哪種方式,它似乎都是相同的努力量。 如果您還沒有,我強烈建議您閱讀表格視圖編程指南 。
或者您可以使用Apple自己的ABPersonViewController:
allowsEditing屬性指定用戶是否可以編輯此人的信息。
我的實現使用帶有自定義標題的UITableView(用於“添加照片”和編輯等效名稱)和一個自定義頁腳(使用UISegmentedControl hack作為一個大按鈕),用於“刪除”等效項。
只是為了向您展示,您可以為此目的創建UITableViewController的子類,然后為了實現類似於Contacts應用程序的編輯模式:
添加屬性以存儲對“取消”按鈕的引用。
var cancelButton: UIBarButtonItem!
在ViewDidLoad()中,將編輯按鈕添加到導航欄作為右項,並准備取消按鈕以稍后將其添加為左項。
self.navigationItem.rightBarButtonItem = self.editButtonItem() self.cancelButton = UIBarButtonItem(title: "Cancel", style: .Plain, target: self, action: "cancelPressed:")
覆蓋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) } }
在編輯模式下,覆蓋UITableViewDelegate的tableView(_:editingStyleForRowAtIndexPath :)和tableView(_:shouldIndentWhileEditingRowAtIndexPath :)方法來配置行樣式和縮進。
按下取消時,實施cancelPressed方法退出編輯模式。
func cancelPressed(button: UIBarButtonItem) { self.setEditing(false, animated: true) }
我知道這個問題很老了,但是有人可能覺得它很有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.