我有一个选择,只会选择一行类别。 但我希望它能在加载时选择Spirits行。
这样的事情:
目前没有选择任何内容:
我应该在哪里进行比较,以使其为selectRowAtIndexPath
?
//自定义表格视图单元格的外观。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
}
categoryString = [arrayCategory objectAtIndex:indexPath.row];
cell.textLabel.text = categoryString;
if (cell.textLabel.text == categoryString) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
else {
cell.accessoryType = UITableViewCellAccessoryNone;
}
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell* newCell = [tableView cellForRowAtIndexPath:indexPath];
int newRow = [indexPath row];
int oldRow = (lastIndexPath != nil) ? [lastIndexPath row] : -1;
if(newRow != oldRow)
{
newCell.accessoryType = UITableViewCellAccessoryCheckmark;
newCell.highlighted =YES;
UITableViewCell* oldCell = [tableView cellForRowAtIndexPath:lastIndexPath];
oldCell.accessoryType = UITableViewCellAccessoryNone;
lastIndexPath = indexPath;
oldCell.highlighted = NO;
}
[tableView deselectRowAtIndexPath:(NSIndexPath *)indexPath animated:YES];
}
答案 0 :(得分:1)
使用 selectRowAtIndexPath:animated:scrollPosition:方法以编程方式选择行。
您的代码中几乎无法解决问题。您应该使用isEqualToString:
方法来匹配字符串,例如if ([cell.textLabel.text isEqualToString:categoryString]) {
。接下来就是,您要将categoryString
分配给cell.textLabel.text
,并在下一行匹配它们,因此它始终会返回YES
。我认为你匹配错误的值。
答案 1 :(得分:0)
您必须手动设置多个复选标记。为此你可以为每个UITableViewCell使用UIImageview,并且根据存储的旧数据,你必须在 didSelectRowAtIndexPath (UITableView的委托方法)中设置复选标记。