didSelectRowAtIndexPath根本不起作用

时间:2014-06-05 22:36:34

标签: objective-c uitableview didselectrowatindexpath

我这里有这个代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = (UITableViewCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        cell = [[MMSideDrawerTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    switch (indexPath.section) {
        case MMDrawerSectionOne:
            if(indexPath.row == 0){
                [cell.textLabel setText:@"Menu Item 1"];
            }
            break;

        case MMDrawerSectionTwo:
            if(indexPath.row == 0){
                [cell.textLabel setText:@"Menu Item 2"];
            }
            break;

        case MMDrawerSectionThree:
            if(indexPath.row == 0){
                [cell.textLabel setText:@"Menu Item 3"];
            }else{
                [cell.textLabel setText:@"Menu Item 4"];
            }
            break;
    }

    cell.backgroundColor = [UIColor clearColor];

    cell.textLabel.textColor = [UIColor whiteColor];

    cell.contentView.alpha = 0.7;

    // Code to add background when user taps
    UIView *bgColorView = [[UIView alloc] init];
    bgColorView.backgroundColor = [UIColor colorWithRed:(55.0/255.0) green:(55/255.0) blue:(55/255.0) alpha:0.3];
    bgColorView.layer.masksToBounds = YES;
    cell.selectedBackgroundView = bgColorView;

    NSLog(@"%@", indexPath);

    return cell;
}

这个代码在这里:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"Testing");
}

每当我点击UITable上的一行时,didSelectRowAtIndexPath什么都不做。我有什么问题吗?

彼得

1 个答案:

答案 0 :(得分:0)

打开InterfaceBuilder并选择您的UITableView。要问自己几个问题:

  1. “选择”设置为“单个”还是“多个”?将其设置为“No Selection”将不会触发didSelectRowAtIndexPath:
  2. 是否已启用“已启用用户互动”?如果没有,didSelectRowAtIndexPath:将不会触发
  3. 您可以按以下方式以编程方式更改这些属性:

    self.tableView.allowsMultipleSelection = NO;
    self.tableView.allowsSelection = YES;
    self.tableView.userInteractionEnabled = YES;
    

    如果不起作用,请尝试接收此SO帖子here的答案。