2012年1月31日火曜日

テーブルの編集1

テーブルを制するものはアプリを制する
なんて言葉があってもおかしくないほど頻繁に利用するのがテーブル。

テーブルの扱いでインターフェースの善し悪しが決まってしまうのは、androidでもiphoneでも、WEBアプリでも同じです。

というわけで、ここではiphone開発のテーブル処理を記述していきます。

まずは、UINavigationItemに編集ボタンを追加する方法


- (void)viewDidLoad {
    NSLog(@"%s", __func__);
    self.navigationItem.rightBarButtonItem = [self editButtonItem];
}

上記の記述をすると、ナビゲーションの右側に編集ボタンが設置されます。

設置された編集ボタンを押下すると、以下のメソッドが呼び出されます。

- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
    NSLog(@"%s", __func__);
    [super setEditing:editing animated:animated];
}

編集ボタン押下後に、デフォルト動作以外でインターフェースを変更したい場合はここに処理を記述します。

編集ボタンを押下すると、削除ボタンが表示されます。その削除ボタンを押下すると、以下のメソッドが呼び出されます。

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle
                                            forRowAtIndexPath:(NSIndexPath *)indexPath {
    NSLog(@"%s", __func__);
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        // NSLog(@"before count is %d", [self.list count]);
        NSInteger row = [indexPath row];

       // この処理を実行すると、tableView:numberOfRowsInSectionが呼び出される
       [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] 
                        withRowAnimation:UITableViewRowAnimationFade];
    }
}

削除処理の場合は、引数editingStyleにUITableViewCellEditingStyleDeleteの値が格納されます。

deleteRowsAtIndexPathsメソッドはテーブルの削除処理と表示をおこないます。

また追加の場合は

        [tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:insertIndexPath_] 
                              withRowAnimation:UITableViewRowAnimationFade];

の処理を記述します。

列の追加と削除はアニメーションを使って、ユーザーが目で確認できるようにするべきです。

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...