UITableView奇怪的行为

时间:2014-04-04 05:38:28

标签: ios cocoa-touch uitableview

在视图加载后第一次点击我的UITableView时,我没有输出

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

    NSLog(@"the clicked index -- %i", indexPath.row);
}

在第二次点击 - 以及随后的所有点击 - 我得到了我期望从前一次点击的输出(除非点击同一行,当然不会触发消息)。因此,如果我点击第2行,然后是0,那么我得到输出:

  • 没有
  • 2
  • 1

这里是cellForRowAtIndexPath的代码;

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

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
    [cell setBackgroundColor:[UIColor blueColor]];
    [cell.textLabel setTextColor:[UIColor whiteColor]];
    [cell.textLabel setTextAlignment:NSTextAlignmentCenter];

    if (_currentTileIndex >= 0 && _currentTileIndex < _timeSlotChumsArrays.count) {

        cell.textLabel.text = (NSString*)_timeSlotChumsArrays[_currentTileIndex][indexPath.row];

    }

    return cell;
}

任何线索?

2 个答案:

答案 0 :(得分:2)

您使用的是错误的委托方法。取消选择单元格时会调用-didDeselect。

更改

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath

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

答案 1 :(得分:0)

使用此委托方法

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
   NSLog(@"%i", indexPath.row);
}