11

名前、電話番号、メモなどとその編集モードを表示する、Apple独自の連絡先アプリの詳細ビューと同様のビューを実装したいと思います。

ビュー全体がどのように行われるかを分析できますか?そのビューはUITableViewまたはUIScrollViewで実行されますか?

4

5 に答える 5

11

連絡先の詳細画面は、実際には非常に簡単に模倣できます。

UITableViewから始めて、UITableViewDataSourceとUITableViewDelegateを提供します。提示するすべてのデータのセクションを提供する必要があります。これは、カスタムヘッダー用に1つ、カスタムフッター(ボタン/アクション)用に1つ、データ用に約6つのセクション(電話番号用に1つのセクション、電子メールアドレス用に別のセクションなど)を意味します。

各セクション内には、そのセクションのデータ量を示すために、データソースからいくつかの行を提供する必要があります。各行について、UITableViewCellを使用して、実際の連絡先データ(FAXラベル/FAX番号の値など)を表示できます。あなたが好きならあなたは空想を得ることができますが、必要はないようです。着信音などの場合は、開示インジケーターを指定する必要があります。

ヘッダーにはUIImageViewとUILabelが必要であり、フッターにはいくつかのUIButtonが必要です。InterfaceBuilderでUITableViewCellの子を作成し、その中にこれらのビューを配置して、他のビューと同じように接続できます。NSBundleを使用して、まだロードされていない他のxibからビューをロードできます。

別の方法は、xibsを使用せずに実行時にUIウィジェットを動的に生成することです。それはすべてあなたがどちらかと言えば管理したいもの(コードまたはxibs)に依存します、私にはそれはどちらの方法でもほぼ同じ量の努力のようです。まだ読んでいない場合は、テーブルビュープログラミングガイドを読むことを強くお勧めします。

于 2010-03-05T18:18:16.047 に答える
3

または、Apple独自のABPersonViewControllerを使用することもできます。

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

permitEditingプロパティは、ユーザーが個人の情報を編集できるかどうかを指定します。

于 2011-04-01T12:47:45.677 に答える
1

私の実装では、カスタムヘッダー(「写真の追加」と同等の名前の編集用)とカスタムフッター(大きなボタンのUISegmentedControlハックを使用)を備えたUITableViewを使用します。

于 2010-03-05T18:02:26.350 に答える
0

これを調べるためにF-Scriptを使用できます。これは、アドレスブックを閲覧しているときのF-Scriptブラウザのスクリーンショットです。基本的に、すべてNSViewから継承する多くのカスタムビューのように見えます。

これを自分で行うには:

  1. 上記のリンクからF-Scriptをダウンロードします
  2. アドレス帳に添付するには、extras /F-ScriptAnywhereディレクトリの指示に従ってください
  3. [アドレス帳]メニューから[Fスクリプト]->[オブジェクトブラウザを開く]を選択します
  4. [表示を選択]をクリックします
  5. 探索するアドレス帳ビューを強調表示してクリックします。
  6. 心ゆくまでナビゲートしてください。
于 2009-10-07T00:20:33.250 に答える
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(_: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)
    }
    

質問はかなり古いことは知っていますが、誰かがそれを役立つと思うかもしれません。

于 2014-12-27T20:20:39.997 に答える