テーブルのすべての行にチェックボックス (またはチェックボックスの方が適切な名前の場合) を追加したいと考えています。行が読み取られたかどうかを示す小さな単純なボックス。覚えておくだけです。もちろん、アプリを閉じたときにも保存されます。また、アプリが更新されても変更されません。
それを行う簡単な方法はありますか?
周りにサンプルはありますか?
次のコードでは、todo リストを作成するためのコードを使用しています。ここでは、2 つのNSMutableArray
itsToDoTitleとitsToDoCheckedを使用して、テーブルの行にデータを入力しています..これがお役に立てば幸いです..
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];
}