我想實現一個類似於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