0

我有带有单元格图像的 tableView 我想在选择任何单元格时添加选择图像它工作正常但问题是首先选择第一行然后选择第一行然后选择 row2 然后选择 row2 和 row1 它应该只有 row2两者都不选。

   - (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {


 cell = [self.tableView cellForRowAtIndexPath:indexPath];

     if (indexPath.row==0) {


     cell.imageView.image=[UIImage imageNamed:@"Activity2.png"]; 
     }

     else if(indexPath.row==1){
    cell.imageView.image=[UIImage imageNamed:@"Catalog2.png"]; 


     }
   else{
    cell.imageView.image=[UIImage imageNamed:@"Library2.png"]; 

     }

    NSUInteger row = indexPath.row;
    [self.appDelegate.splitViewController viewWillDisappear:YES];

  NSMutableArray *viewControllerArray=[[NSMutableArray alloc] initWithArray: [[self.appDelegate.splitViewController.viewControllers objectAtIndex:1] viewControllers]];
  [viewControllerArray removeLastObject];
      if (row == 0) {
  self.firstDetailViewController=[[[FirstDetailViewController alloc] init]autorelease];
  [viewControllerArray addObject:self.firstDetailViewController];
  self.appDelegate.splitViewController.delegate = self.firstDetailViewController;
  }

     if (row == 1) {
self.secondDetailViewController=[[[SecondDetailViewController alloc]init]autorelease];
[viewControllerArray addObject:self.secondDetailViewController];
self.appDelegate.splitViewController.delegate = self.secondDetailViewController;

    }

   if (row == 2) {

    self.myLearningViewController=[[[MyLearningViewController alloc]init]autorelease];
[viewControllerArray addObject:self.myLearningViewController];
self.appDelegate.splitViewController.delegate = self.myLearningViewController;
    }
     }
4

2 回答 2

0

我认为,您可以cellForRowAtIndexPath像这样设置单元格的背景视图

cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.backgroundColor = [UIColor clearColor];
UIImageView *bgView= [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
bgView.backgroundColor = [UIColor clearColor];
bgView.image = [UIImage imageNamed:@"cellBgImage.png"];
cell.backgroundView = bgView;

并且,在 中didSelectRowAtIndexPath,使用这个

[tableView deselectRowAtIndexPath:indexPath animated:YES];

请检查这是否有帮助。

于 2013-07-04T12:04:15.663 回答
0

如果您正在为 iOS 5.0 及更高版本编写代码,如果您的设置良好,则可以诉诸allowsMultipleSelection 。将此设置为NO。否则,使用–deselectRowAtIndexPath:animated: say 清除第一个选择。在您的-tableView:didSelectRowAtIndexPath:.

于 2013-07-04T04:04:32.390 回答