2016-04-20 15 views
0

UITableViewCellからラベルを削除するのは、その特定のセルでは必要ないためです。問題は、セルが必要なときに再利用されるときですが、以前は削除されています。UITableViewCellからUILabelsを削除してもう一度追加します。

if (post.blockContent == TRUE) { 
     [cell.titleLabel removeFromSuperview]; 
     [cell.contentLabel removeFromSuperview]; 
} 

UITableViewCellに再度追加するにはどうすればよいですか?

私は動的なセルの高さですべてをリンクする制約があるため、それらを削除します。セルの中央に空白を作成するだけなので、単に非表示にすることはできません。

答えて

2

// set visibile for all cell 
[cell.contentView addSubview:cell.titleLabel]; 
[cell.contentView addSubview:cell.contentLabel]; 
// when contindition statisfy it will be hide 
if (post.blockContent == TRUE) { 
    [cell.titleLabel removeFromSuperview]; 
    [cell.contentLabel removeFromSuperview]; 
} 

選択-2

cell.titleLabel.hidden = NO; 
cell.contentLabel.hidden = NO; 

    if (post.blockContent == TRUE) { 
    cell.titleLabel.hidden = YES; 
    cell.contentLabel.hidden = YES; 
    } 
+0

これは座標(0,0) – bruno

+0

に追加されます......... –

+0

2番目の選択肢は私が質問で事前に説明したようには関係ありません。最初の選択肢は、CGPointZeroにラベルを追加します。そして、それらを削除すると、制約も削除されます。 – bruno

0

のようにテーブルビューには、セルを再利用します。 同じインスタンスを使用したすべてのセルがラベルを削除するため、この理由はremoveFromSuperviewを使用していないためです。

解決策は使用制約です。 表示するラベルをラップする必要があり、他のオブジェクトにはビューをスキップしてセルの定数を減らすという制約があります。

heightForRowでは、表示なしで高さを計算する必要があります。

は、実行時に優先順位が変更され、ソリューションの主なアイデアです。