2

私は実際にテーブル ビュー (すべてのコースを一覧表示) があるアプリを作成しています。そのうちの 1 つをクリックすると、そのコースの詳細が表示されます。(詳細ビュー)今私が作りたいのは、その詳細ビューの編集モードです..そして、iPhoneのネイティブアプリのような感じを与えたいです:P

連絡先のアプリを調べると、連絡先で[編集]をクリックすると、ビューコントローラー全体が変更されないように見えますが、古い/新しいフィールドとボタンを非表示/表示するだけです..

新しいView Controller(編集用)ではない場合、正確にはどのように機能していますか?新しいView Controllerの場合、View Controllerをナビゲーションスタックにプッシュするのは非常に簡単だと思います..

4

2 に答える 2

1

ビューコントローラの「-(void)setEditing:(BOOL)editinganimated:(BOOL)animated」メソッドで、現在の動作をオーバーライドします。

 - (void)setEditing:(BOOL)editing animated:(BOOL)animated {
    [self.tableView beginUpdates]; // Tell the table to begin updates to ensure that the following reloads and animations all happen at once

    [super setEditing:editing animated:animated];

    // set the table editing if you are not using UITableViewController

    // reload any rows that may need updating for the new state

    if (editing) {
        // tell the table view to insert the editing rows
    } else {
        // tell the table view to remove the editing rows
    }

    [self.tableView endUpdates]; // commit the updates.
}

これで、View Controller(およびテーブルビュー)が編集モードに入ると、ViewControllerはテーブルに編集スポットに行を挿入するように指示します。テーブル自体も編集モードに移行します。

ビューコントローラが編集(およびそれを含むテーブルビュー)から移動すると、特定の編集を行っていた行が削除されます。

UITableViewControllerサブクラスを使用しておらず、UIViewController自体のサブクラスのみを使用している場合は、テーブルビューに同時に編集に移行するように指示する必要があることに注意してください。

[tableView setEditing:editing animated:animated];

行のリロードや挿入などが必要な場合、デリゲートメソッドとデータソースメソッドは、テーブルが編集モードであるかどうかを確認し、編集モードまたは非編集モードのいずれかに必要な行を返す必要があります。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    if (tableView.editing) {
        return /*editing count*/;
    }
    return 0;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    if (tableView.editing) {
        // return cells for the editing state.
    }

    // return cells based on the standard state.
}
于 2012-07-24T10:15:40.487 に答える
0

はい、あなたはiPhoneでネイティブの連絡先のアプリを書いていますが、ビューコントローラー全体を変更するのではなく、古い/新しいフィールドとボタンを非表示/表示するだけです..

そのためには、最初に UITableView を取得する必要があります。次に、別のセクションを取得してからそのセクションの行を取得するか、UITableView のヘッダー ビューを使用して、連絡先のアプリで連絡先のアプリのようなビューを表示します。連絡先の ImageView と連絡先の名前と会社のフィールドUITableView のヘッダー ビューに表示されます。

UITableView のフッター ビューを使用して、テーブル ビューの下部にボタンまたは一部のビューを追加することもできます。

このように、ユーザーが選択したコースの詳細ビューを表示できます。

編集モードの場合、ユーザーが [編集] ボタンをタップすると、テーブル ビューをリロードし、テーブル ビューのデリゲート メソッドでテーブル ビューに適切なビューを提供する必要があります。この目的のために、コース詳細ビュー モードまたはコース編集モードなどのモードを追跡する必要があります。

また

2 つの異なるモードで、2 つの別々のテーブルをまとめて使用できます。

ユーザーが特定のコースロードの次のビューをタップすると、コースの詳細が表示されます。

ユーザーが [編集] ボタンをタップすると、[tableview removeFromSuperView] などのコース詳細のテーブル フォーム ビューが削除されます。

異なるビューを持つコース編集テーブルを追加し、

例 [self.view addSubview:courseEditTable];

于 2012-07-25T11:12:44.153 に答える