2012-04-17 8 views
0

私は十分に機能しているテーブルビューを持っていますが、最初のセルを残りのセルの 'ロック解除'ボタンにしたいと思います。UITableViewの最初のセルを他のすべてのセルと異なるようにする

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return [currentPack count] + 1; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSLog(@"Row is %i", indexPath.row); 

    if(indexPath.row == 0) 
    { 
     SoundCell *cell = [SoundCell dequeOrCreateInTable:soundsTable]; 
     cell._NameLabel.text = @"Unlock This Pack; 
     [cell._startButton setAlpha:0.0]; 

     return cell 
    } 
    else 
    { 
     SoundCell *cell = [SoundCell dequeOrCreateInTable:soundsTable]; 
     cell._NameLabel.text = [currentPack objectAtIndex:indexPath.row - 1]; 

     return cell 
    } 
} 

これで、最初のセルは他のセルとは異なり、正確に見えるようになりました。私の問題は、何らかの理由で、後の細胞のいくつかは、彼らが行われたときindexPath.rowが0でなくても

[cell._startButton setAlpha:0.0]; 

一部を使用することです。私はテーブルを上下にスクロールすると、他のセルもこの問題を拾うことがあります。他のすべての方法で、テーブルは正常に動作し、セルを選択すると正しい応答がトリガーされます。 これを引き起こす可能性のある人は誰ですか? ...元々実装するのは非常に簡単なもの

おかげ

+2

私は 'dequeOrCreateInTable:'は両方のセルに同じreuseIdentifierを使用すると思います。とにかく、アルファ値が唯一の違いならば、 '[cell._startButton setAlpha:1.0];'を 'else'に入れてください –

答えて

4

ますように思えて再利用するとき、彼らが混ざらないように、2つの細胞型に対して異なる再利用識別子を使用してください。

または行の残りの部分に次の行を追加します。

[cell._startButton setAlpha:1.0]; 
+1

ありがとう、私は公式には馬鹿です:-)私はそれが私は逃した。 – TheBestBigAl

+1

ハハ、私たちは皆、一度も違っています! – lnafziger

0

私はSoundCellの別のインスタンスを作成し、I-VARとして保存することをお勧めしたいです。一度だけ設定し、行インデックス0に戻ります。残りの行は、再利用可能な「通常の」セルを返します。

1

セルキャッシングが発生しています。いくつかのセルでsetAlphaを呼び出す場合は、それらをすべて設定して、既存のセルの古い値にならないようにします。

関連する問題