名前、電話番号、メモなどとその編集モードを表示する、Apple独自の連絡先アプリの詳細ビューと同様のビューを実装したいと思います。
ビュー全体がどのように行われるかを分析できますか?そのビューはUITableViewまたはUIScrollViewで実行されますか?
名前、電話番号、メモなどとその編集モードを表示する、Apple独自の連絡先アプリの詳細ビューと同様のビューを実装したいと思います。
ビュー全体がどのように行われるかを分析できますか?そのビューはUITableViewまたはUIScrollViewで実行されますか?
連絡先の詳細画面は、実際には非常に簡単に模倣できます。
UITableViewから始めて、UITableViewDataSourceとUITableViewDelegateを提供します。提示するすべてのデータのセクションを提供する必要があります。これは、カスタムヘッダー用に1つ、カスタムフッター(ボタン/アクション)用に1つ、データ用に約6つのセクション(電話番号用に1つのセクション、電子メールアドレス用に別のセクションなど)を意味します。
各セクション内には、そのセクションのデータ量を示すために、データソースからいくつかの行を提供する必要があります。各行について、UITableViewCellを使用して、実際の連絡先データ(FAXラベル/FAX番号の値など)を表示できます。あなたが好きならあなたは空想を得ることができますが、必要はないようです。着信音などの場合は、開示インジケーターを指定する必要があります。
ヘッダーにはUIImageViewとUILabelが必要であり、フッターにはいくつかのUIButtonが必要です。InterfaceBuilderでUITableViewCellの子を作成し、その中にこれらのビューを配置して、他のビューと同じように接続できます。NSBundleを使用して、まだロードされていない他のxibからビューをロードできます。
別の方法は、xibsを使用せずに実行時にUIウィジェットを動的に生成することです。それはすべてあなたがどちらかと言えば管理したいもの(コードまたはxibs)に依存します、私にはそれはどちらの方法でもほぼ同じ量の努力のようです。まだ読んでいない場合は、テーブルビュープログラミングガイドを読むことを強くお勧めします。
または、Apple独自のABPersonViewControllerを使用することもできます。
permitEditingプロパティは、ユーザーが個人の情報を編集できるかどうかを指定します。
私の実装では、カスタムヘッダー(「写真の追加」と同等の名前の編集用)とカスタムフッター(大きなボタンのUISegmentedControlハックを使用)を備えたUITableViewを使用します。
これを調べるためにF-Scriptを使用できます。これは、アドレスブックを閲覧しているときのF-Scriptブラウザのスクリーンショットです。基本的に、すべてNSViewから継承する多くのカスタムビューのように見えます。
これを自分で行うには:
方法を示すために、その目的のためにUITableViewControllerをサブクラス化してから、連絡先アプリと同様の編集モードを実装することができます。
[キャンセル]ボタンへの参照を保存するプロパティを追加します。
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)
}
質問はかなり古いことは知っていますが、誰かがそれを役立つと思うかもしれません。