2009-10-06 109 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) 
    } 
    

我知道這個問題是很老,但有人可能會發現它有用。

相關問題