簡體   English   中英

如何實現iPhone Contact應用程序的詳細信息

[英]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:

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

allowsEditing屬性指定用戶是否可以編輯此人的信息。

我的實現使用帶有自定義標題的UITableView(用於“添加照片”和編輯等效名稱)和一個自定義頁腳(使用UISegmentedControl hack作為一個大按鈕),用於“刪除”等效項。

您可以使用F腳本來探索此問題。 這是瀏覽地址簿時F腳本瀏覽器的屏幕截圖 基本上,它看起來像很多自定義視圖都從NSView繼承。

要自己做到這一點:

  1. 從上面的鏈接下載F腳本
  2. 按照extras / F-Script Anywhere目錄中的說明連接到地址簿
  3. 從地址簿菜單中選擇F腳本 - >打開對象瀏覽器
  4. 單擊選擇視圖
  5. 突出顯示要瀏覽的通訊簿視圖,然后單擊它。
  6. 瀏覽您心中的內容。

只是為了向您展示,您可以為此目的創建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) } 

我知道這個問題很老了,但是有人可能覺得它很有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM