Изображение customCell не отвечает на didSelectRowAtIndexPath (но в остальном работает) - PullRequest
1 голос
/ 27 января 2012

У меня есть хороший customCell для UITableView, все работает хорошо.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = nil;

    CustomCell *cell = (CustomCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {

        NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];

        for (id currentObject in topLevelObjects){
            if ([currentObject isKindOfClass:[UITableViewCell class]]){
                cell =  (CustomCell *) currentObject;
                break;
            }
        }
    }


    // LOOK HERE: cellArrowPointingRight is an UIImage view of which I like to turn on later
    [cell.cellArrowPointingRight setHidden:YES];
    // The above line works as it hides all cellArrowPointingRight(s)

    return cell;
}

в пользовательском представлении (сделано в IB) у меня также есть cellArrowPointingRight (он связан с H и @synthesize cellArrowPointingRight в M

проблема в том, что я не могу запустить его при выборе ячейки

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



    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
   // cell.contentView.backgroundColor = [UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:0.5];
   cell.textLabel.text = @"Clicked";
  // PROBLEM HERE: (cellArrowPointingRight is not legal)
  [cell.cellArrowPointingRight setHidden:NO]; 
} 

Как мне решить эту проблему?

1 Ответ

1 голос
/ 27 января 2012

Как вы используете:

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

Эта ячейка по умолчанию обычно не должна иметь поле с именем cellArrowPointingRight, поэтому обычный UITableViewCell не будет отвечать на это.

Что вам нужно сделать, это получить клетку как:

CustomCell *cell = (CustomCell*)[tableView cellForRowAtIndexPath:indexPath];

Предполагая, что ваша CustomCell является суперклассом UITableViewCell.

...