2

UITableView を設定すると奇妙なバグが発生します。最初にクリックすると何も起こりません(UIViewを変更する必要があります)が、その上または下のセルをクリックすると、表示したいUIViewに変わります。私が作成した他のすべてのテーブルビューと同じように作成しています。コードは次のとおりです。

- (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

didSelect ではなくdidDeselectであることに注意してください。あなたが望むのは、見方を変えることだと思います

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

これは、Xcode のオートコンプリートの提案を、それが正しい方法ではないことに気付かずに受け入れている人々によって引き起こされる一般的なエラーだと思います。

2 回目のクリックで機能する理由は、最初に選択されたセルの選択が解除され、メソッドが呼び出されるためです。

于 2012-09-15T00:22:24.620 に答える