Skip to content

UITableViewをチェックリストにする方法その2

2012年1月22日

前は無理やりチェックリスト化してたけどあれをもうちょっとスリムにした。

まずは、表示するリストのArrayと、チェックボックス情報を管理するArrayをつくる。これらはメンバ変数です。

Array作成部分にuserdefault使ってるけどつくるときは各々で。

    memberList_ = [[NSMutableArray alloc] initWithArray:[[NSUserDefaults standardUserDefaults] arrayForKey:@"memberList"]];
    checkboxArray_ = [[NSMutableArray alloc] init];

    for (int i = 0; i < [memberList_ count]; ++i) {
        [checkboxArray_ addObject:@"YES"];
    }

んで、チェックの表示はこんな感じ

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

    if ([[checkboxArray_ objectAtIndex:indexPath.row] boolValue]) {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
    }
    else{
        cell.accessoryType = UITableViewCellAccessoryNone;
    }

    cell.textLabel.text = [memberList_ objectAtIndex:indexPath.row];
    return cell;
}

タップしたときはこんなかんじ

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

    if ([[checkboxArray_ objectAtIndex:indexPath.row] boolValue]) {
        [checkboxArray_ replaceObjectAtIndex:indexPath.row withObject:@"NO"];
    }else{
        [checkboxArray_ replaceObjectAtIndex:indexPath.row withObject:@"YES"];
    }
    [self.tableView reloadData];

    [tableView deselectRowAtIndexPath:indexPath animated:YES];
}

これでできるはず。

トグル情報を引っ張りたいときは、リスト配列と、チェックボックス配列を照らしあわせればOK

広告

From → iPhone開発

コメントする

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。