2014-03-25 28 views
0

改變`UIImageView`在自定義單元格我有UIImageView在自定義單元格中UITableView和想要改變didSelectRowAtIndexPath如何`UITableView`

它的工作與UIImageViewUITableView外面,裏面也沒有工作的形象。

我使用這個代碼..

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSString *string = [[self.itemsInTable objectAtIndex:indexPath.row] objectForKey:@"Name"]; 
    ExpandCell *cell = [self.menuTableView dequeueReusableCellWithIdentifier:@"Cell"]; 
    UIImage *image; 

    if ([string isEqualToString:@"News"]) { 

     if ([[self.viewImage image] isEqual:[UIImage imageNamed:@"down-arrow.png"]]) { 
      NSLog(@"down"); 
      image = [UIImage imageNamed:@"up-arrow.png"]; 

     } else { 
      NSLog(@"up"); 
      image = [UIImage imageNamed:@"down-arrow.png"]; 
     } 

     cell.imgExpand.image = image; 
     self.viewImage.image = image; 

    } 
} 

我怎樣才能解決呢?

回答

1

首先爲您的UIImageView(比如說10)分配一個標籤號碼。 然後寫這段代碼在你的didSelectRowAtIndexPath方法

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
UIImageView *yourImageView = (UIImageView*)[cell viewWithTag:10];//Replace yourImageView with the name of your UIImageView on custom cell 

//--------- Your code ------ 
NSString *str = [[self.itemsInTable objectAtIndex:indexPath.row] objectForKey:@"Name"]; 
UIImage *image; 

if ([str isEqualToString:@"News"]) 
{ 

    if ([[self.viewImage image] isEqual:[UIImage imageNamed:@"down-arrow.png"]]) 
    { 
     NSLog(@"down"); 
     image = [UIImage imageNamed:@"up-arrow.png"]; 

    } 
    else { 
     NSLog(@"up"); 
     image = [UIImage imageNamed:@"down-arrow.png"]; 
    } 

    [yourImageView setImage:image]; 
    [self.viewImage setImage:image]; 
} 

我認爲這將解決您的問題。

1

以下行創建了一個新的細胞:

ExpandCell *cell = [self.menuTableView dequeueReusableCellWithIdentifier:@"Cell"]; 

將其更改爲:

ExpandCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 

這會給你你剛纔選擇的當前可見的細胞。

0

didSelectRowAtIndexPath方法

+0

這與被問到的問題無關?這應該作爲評論發佈,而不是答案。此外,OP可能不希望選擇被清除。 – rmaddy

+0

我曾在[http://stackoverflow.com/questions/18825733/cannot-disable-multi-touch-on-uitable-view-ios7]有同樣的問題。所以,我認爲,它可能是有用的,因爲它的工作我 – lee

0

的末尾添加此命令[tableView deselectRowAtIndexPath:indexPath animated:YES];當您設置一個新的形象,你可以使用函數:

- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation 

重裝你改變了小區。