iPhone,如何在简单的表格视图设置屏幕上存储/加载一个值?

时间:2010-10-30 15:59:12

标签: iphone objective-c xcode

继承我的cellForRowAtIndexPath,我在其中为一行加载一个值,而不是一个简单数组中的值并将其转换为一行。

- (UITableViewCell *)tableView:(UITableView *)tableView 
    cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:
    CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 
        reuseIdentifier:CellIdentifier] autorelease];
}
NSInteger row = [indexPath row];
cell.textLabel.text = [dayArray objectAtIndex:row];
NSUserDefaults *myDefaults = [NSUserDefaults standardUserDefaults];
NSInteger startRow = [myDefaults integerForKey:kStartRow];
if (startRow == row) {
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
} else {
    cell.accessoryType = UITableViewCellAccessoryNone;
}
return cell;
}

在我保存值的地方,注意我每次都在使用kStartRow和数组值。

- (void)tableView:(UITableView *)tableView 
    didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
int newRow = [indexPath row];
NSUserDefaults *myDefaults = [NSUserDefaults standardUserDefaults];
[myDefaults setInteger:newRow forKey:kStartRow]; // Set the tablecell 
[myDefaults setObject:[dayArray objectAtIndex:newRow] forKey:kNSUEndOfMonthDay];
[myDefaults synchronize];
[tableView deselectRowAtIndexPath:indexPath animated:YES];
[tableView reloadData];
 [self.navigationController popViewControllerAnimated:YES];
}

当我想在应用程序首次运行时设置默认值时,使用两个值make会有点乱。如何使用一个存储值进行管理?

1 个答案:

答案 0 :(得分:0)

cell.accessoryType = indexPath.row == [dayArray indexOfObject:[[NSUserDefaults standardUserDefaults] objectForKey:kNSUEndOfMonthDay]] ? UITableViewCellAccessoryCheckmark : UITableViewCellAccessoryNone;