0

私はtableViewを持っています。これには、最初は4つのセクションがあり、それぞれに1つの行があります。最初の行に対するユーザーの操作に応じて、セクションの2番目の行を挿入または削除する必要があります。その後、タップした次のセルの設定を行う必要があります。インタラクションを処理するための私のコードは次のとおりです。

-(void) tableViewSwitchToggled: (UISwitch*) sender{
    targetSection = sender.tag; //each switch is added to cell's contentview and it's tag is set to indexPath.section
    UITableView* tableView = ...

    if (someBool){
        [tableView insertRowsAtIndexPaths: [NSArray arrayWithObject: [NSIndexPath indexPathForRow: 1 inSection: targetSection]] withRowAnimation: UITableViewRowAnimationTop];
        UITableViewCell* detailsCell = [tableView cellForRowAtIndexPath: [NSIndexPath indexPathForRow: 0 inSection: targetSection + 1]]; //I try to get the first row of the next section and it is always nil!!!
        //do something with detailsCell content
    }
    else{
        [tableView deleteRowsAtIndexPaths: [NSArray arrayWithObject: [NSIndexPath indexPathForRow: 1 inSection: targetSection]] withRowAnimation: UITableViewRowAnimationRight];
        UITableViewCell* detailsCell = [tableView cellForRowAtIndexPath: [NSIndexPath indexPathForRow: 0 inSection: targetSection + 1]]; //and it works perfectly, giving me the cell address
         //do something with detailsCell content
    }
}

だからここに私の質問があります-行を挿入した後になぜnilセルを取得するのですか?tableViewには、すべてのセルがすでに割り当てられているはずではありませんか?ご協力いただきありがとうございます!

4

1 に答える 1

1

表示されているセルへの参照のみを取得できます。tableView に、表示可能なセルの配列 (またはそれらのインデックス パス、どれを忘れるか) を要求できます。細胞は、目に見えている間に存在する一時的なものです。そのため、細胞をリサイクルすることができます。

必要なことは、そのセルが再表示されたときに何か特別なことをしたいということをコードに書き留めることです。

于 2012-07-22T15:25:42.497 に答える