1

テーブルのすべての行にチェックボックス (またはチェックボックスの方が適切な名前の場合) を追加したいと考えています。行が読み取られたかどうかを示す小さな単純なボックス。覚えておくだけです。もちろん、アプリを閉じたときにも保存されます。また、アプリが更新されても変更されません。

それを行う簡単な方法はありますか?
周りにサンプルはありますか?

4

1 に答える 1

3

次のコードでは、todo リストを作成するためのコードを使用しています。ここでは、2 つのNSMutableArray itsToDoTitleitsToDoCheckedを使用して、テーブルの行にデータを入力しています..これがお役に立てば幸いです..

itsToDoTitleとitsToDoChecked配列を含めるか、プロパティ ファイルに書き込むことで、同じリストを再び取得できます。NSUserDefaults

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {


    NSString *CellIdentifier = @"ToDoList";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

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

        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    }

    cell.textLabel.text = [itsToDoTitle objectAtIndex:indexPath.row];
    cell.textLabel.font = [UIFont systemFontOfSize:14.0];
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    cell.selectionStyle = UITableViewCellSelectionStyleBlue;


    BOOL checked =  [[itsToDoChecked objectAtIndex:indexPath.row] boolValue];
    UIImage *image = (checked) ? [UIImage imageNamed:@"checked.png"] : [UIImage imageNamed:@"unchecked.png"];

    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    CGRect frame = CGRectMake(0.0, 0.0, image.size.width, image.size.height);
    button.frame = frame;   // match the button's size with the image size
    button.tag = indexPath.row;
    [button setBackgroundImage:image forState:UIControlStateNormal];

    // set the button's target to this table view controller so we can interpret touch events and map that to a NSIndexSet
    [button addTarget:self action:@selector(checkButtonTapped:event:) forControlEvents:UIControlEventTouchUpInside];
    cell.accessoryView = button;

    return cell;
}


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

    BOOL checked = [[itsToDoChecked objectAtIndex:indexPath.row] boolValue];
    [itsToDoChecked removeObjectAtIndex:indexPath.row];
    [itsToDoChecked insertObject:(checked) ? @"FALSE":@"TRUE" atIndex:indexPath.row];
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    UIButton *button = (UIButton *)cell.accessoryView;

    UIImage *newImage = (checked) ? [UIImage imageNamed:@"unchecked.png"] : [UIImage imageNamed:@"checked.png"];
    [button setBackgroundImage:newImage forState:UIControlStateNormal];

    UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Save"
                                                                   style:UIBarButtonItemStylePlain target:self action:@selector(saveChecklist:)];
    self.navigationItem.rightBarButtonItem = backButton;
    [backButton release];

}
于 2012-05-30T13:31:52.873 に答える