2009-10-08 30 views
5

問題:表ビュー内のセル間の区切りは、ビューの読み込み時とロード時に表示されるセルに対してのみ表示されます。テーブルビューをスクロールダウンすると、ビューにスクロールされたセルにはセパレータが表示されず、テーブルビューがスクロールバックされると、最初のセルにセパレータは表示されません。スクロール時にセル間でUITableView区切り線が消える

詳細:標準のUITableViewCellを追加するUITableViewがあります。これらのセルは、initWithFrame、frame height = 90pxで作成されます。ペン先から作成したカスタムビューをこのセルのビューheight = 90pxに追加します。セルの高さは、tableView:heightForRowAtIndexPath:で90pxで指定します。

誰でもこの現象が発生しましたか?

答えて

6

私はこれに対する解決策が簡単だと感じました... 私は自分のセルの高さを91pxにして、セパレータラインをスクロールする必要があるように見せます。

3

私のテーブルには膨大な量のセルがあり、古い携帯電話ではほとんど使用できなくなるため、ダグラスのソリューションを使用できませんでした。セルを再利用することがパフォーマンスにとって重要です。

しかし、私は次のように、透明のセパレータを使用して、セルのcontentViewに自分を追加する問題を回避するために管理:

yourTable.separatorColor = [UIColor clearColor]; 
separatorView.frame = FactRectMake(0, rowHeight-1, appFrame.size.width, 0.2); 
3

私は同じ問題を抱えていたが、私は別のソリューションを使用していました。

for (UIView *eachView in self.subviews) { 
    [eachView removeFromSuperview]; 
} 

これは、同様に、セパレータのビューを削除:私は使用して私のセルをクリアしたため 私のセパレータは消えました!

代わりに、私は右側のサブビューに追加する前に、私の税関ビュー(3つのラベル)のそれぞれのタグを割り当て:私はセルをクリアしたときに次に

tempFirstNameLabel.tag = 100; 
self.firstNameLabel = tempFirstNameLabel; 
[self addSubview:self.firstNameLabel]; 

、私はこれらのビューを削除:

for (int i = 100; i<103; i++) { 
    UIView *eachView = [self viewWithTag:i]; 
    [eachView removeFromSuperview]; 
} 

これにより、@Douglas Smithのソリューションがもたらしたメモリ管理の問題も回避されます。

1

あなたは、セパレータなし、その後、再び一行

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

    // it is a bug in iOS 7 
    tableView.separatorStyle = UITableViewCellSeparatorStyleNone; 
    tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine; 
を設定するべきではありません
関連する問題