UITableViewCellのサブクラスからUIButtonを削除する際に問題が発生しました。このボタンは、セルが表ビューの最初のセルである場合にのみ追加されます。したがって、このボタンは無制限にすることも、UIButtonクラスのインスタンスにすることもできます。さらに、これらのセルはすべて同じ識別子を持つため、最初のセル(ボタン付き)が下に移動した場合があります。次に、このボタンを削除する必要があります。UITableViewCellからUIButtonを削除する
私は、このような方法でそれをやっている:
if(callBtn != nil) {
[callBtn removeFromSuperview];
}
はしかし、それはアプリケーションのクラッシュの原因となります。
私は、この問題は最初のセルと他のセルで異なる識別子を使用することで解決できると思いますが、おそらくそれがより良い解決策です。しかし、私はこのコードが間違っているか、またはUITableViewCellのサブクラスからサブビューを削除する際に気をつけなければならないことを知りたいと思います。
@EDIT:ここ は、細胞が作成されているコードです:
if(withCallBtn == YES) {
callBtn = [[UIButton alloc] initWithFrame:CGRectZero];
callBtn.tag = CALL_BUTTON_TAG;
[callBtn addTarget:self action:@selector(callBtnAction:) forControlEvents:UIControlEventTouchUpInside];
// setting background, title, etc
[self.contentView addSubview:callBtn];
[callBtn release];
}
挨拶、 アダム
ボタンを追加したコードを表示します。おそらくあなたがそこでそれを上書きするでしょう。 –
"ボタンコードの追加"というタイトルのコードはどこにありますか? removeCallBtnはどのように見えますか? スーパービューからボタンを削除すると、そのボタンはリリースされますが、callBtnはnilに設定されません。どちらかを実行し、スーパービューから削除する前にcallBtnを保持するか、削除するときに変数をnilに設定し、再度使用するときは再作成する必要があります。ここで完全なコードを投稿してください。どこかの論理的なエラーがあります。ところで、あなたはARCを使っていませんよね? –
運がいいですか? – lnafziger