Objective c 单行选择-UITableView
下午好 我试图在UITableView中选择一行来部署我的应用程序,但当我选择另一行时,前一行不清楚。我用图像来表示线条的选择。我试图让每个用户的选择表行保留取消选择的图像,但没有成功Objective c 单行选择-UITableView,objective-c,ios,uitableview,Objective C,Ios,Uitableview,下午好 我试图在UITableView中选择一行来部署我的应用程序,但当我选择另一行时,前一行不清楚。我用图像来表示线条的选择。我试图让每个用户的选择表行保留取消选择的图像,但没有成功 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *EditCellIdentifier = @"EditCe
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *EditCellIdentifier = @"EditCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:EditCellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:EditCellIdentifier] autorelease];
UILabel *label = [[UILabel alloc] initWithFrame:kLabelRect];
label.tag = kCellLabelTag;
[cell.contentView addSubview:label];
[label release];
UIImageView *imageView = [[UIImageView alloc] initWithImage:unselectedImage];
imageView.frame = CGRectMake(5.0, 10.0, 23.0, 23.0);
[cell.contentView addSubview:imageView];
imageView.hidden = !inPseudoEditMode;
imageView.tag = kCellImageViewTag;
[imageView release];
}
[UIView beginAnimations:@"cell shift" context:nil];
UIImageView *imageView = (UIImageView *)[cell.contentView viewWithTag:kCellImageViewTag];
NSNumber *selected = [selectedArray objectAtIndex:[indexPath row]];
imageView.image = ([selected boolValue]) ? selectedImage : unselectedImage;
imageView.hidden = !inPseudoEditMode;
[UIView commitAnimations];
UILabel *label = (UILabel *)[cell.contentView viewWithTag:kCellLabelTag];
label.text =[listOfItems objectAtIndex:[indexPath row]];
label.frame = (inPseudoEditMode) ? kLabelIndentedRect : kLabelRect;
label.opaque = NO;
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[tv deselectRowAtIndexPath:indexPath animated:YES];
if (inPseudoEditMode) {
BOOL selected = [[selectedArray objectAtIndex:[indexPath row]] boolValue];
[selectedArray replaceObjectAtIndex:[indexPath row] withObject:[NSNumber numberWithBool:!selected]];
[tv reloadData];
}
}
我猜您希望一次只允许选择一行 以下是我在
表视图:didselectrowatinexpath:
中的建议:
将所有行标记为未选中:
for (int i = 0; i < [selectedArray count]; i++) {
[selectedArray replaceObjectAtIndex:i withObject:[NSNumber numberWithBool:NO]];
}
[selectedArray replaceObjectAtIndex:[indexPath row] withObject:[NSNumber numberWithBool:YES]];
或者,在相同的for循环中执行所有操作:
for (int i = 0; i < [selectedArray count]; i++) {
NSNumber rowSelected = [NSNumber numberWithBool:(indexPath.row == i)];
[selectedArray replaceObjectAtIndex:i withObject:rowSelected];
}
for(int i=0;i<[selectedArray count];i++){
NSNumber rowSelected=[NSNumber numberWithBool:(indexPath.row==i)];
[selectedArray replaceObjectAtIndex:i with Object:rowSelected];
}
希望这就是你想要的 我使用的最短路径
for(int i=0;i<[selectedArray count];i++){
[selectedArray replaceObjectAtIndex:i with Object:[NSNumber numberWithBool:i==indexath.row?是:否]];
}
这里是晚上,晚上好。感谢您的及时合作,这正是我们需要的。如果这对您有帮助,请向上投票/打分作为答案。我们都在努力通过帮助建立声誉。标记答案也有助于遇到相同问题的其他人,以便他们确切地知道什么对你有用。
for (int i = 0; i < [selectedArray count]; i++) {
[selectedArray replaceObjectAtIndex:i withObject:[NSNumber numberWithBool:i==indexpath.row?YES:NO]];
}