2

设置 UITableView 时出现一个奇怪的错误。发生的情况是,当我第一次单击它时,什么也没有发生(它应该更改 UIView),但是当我单击它上方或下方的单元格时,它会更改为我想要显示的 UIView。我正在创建它,就像我创建的所有其他 tableview 一样,这里是代码:

- (void)viewDidLoad {

    [super viewDidLoad];
    TableView = [[UITableView alloc] initWithFrame:CGRectMake(0,0,320.0,120.0)]; 
    // Table View is an iVar in the header file
    TableView.dataSource = self;
    TableView.delegate = self;
}

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath     {

    return 44;
}

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {

    return 10;
}

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    return 5;
}

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {

    return 1;
}

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

    static NSString* CellIdentifier = @"CELLIDENTIFIER";
    UITableViewCell* cell = [TableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
        [cell setSelectionStyle:UITableViewCellSelectionStyleBlue];
        [cell setBackgroundView:[[GMCellBackground alloc] init]];
    }

    cell.textLabel.text = [array objectAtIndex:indexPath.row];
    return cell;
}

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

}
4

1 回答 1

3

我想我看到了你的问题。您在评论中写道,您在

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

请注意,它是didDeselect不是didSelect。你想要的我认为是改变观点

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

这是我认为人们接受 Xcode 的自动完成建议而没有注意到它不是正确的方法而导致的常见错误。

它在您第二次单击时起作用的原因是被选中的第一个单元格被取消选择,因此您的方法被调用。

于 2012-09-15T00:22:24.620 回答