これは実際の問題ではありません。 UIButtonにいくつかのサブビューを追加しています(各ボタンにはタグがあります).4または5のサブビューがあることがわかります。 だから、私はいくつかのサブビュー(この場合は、特に4番目と5番目)を削除したいとき:5ない複数あるので、安全タグ付きサブビューを削除する
int cnt=[[(UIView *)[self.scrollView viewWithTag:index] subviews] count];
if (cnt==4) {
[[[(UIView *)[self.scrollView viewWithTag:index] subviews] objectAtIndex:3] removeFromSuperview];
}
if (cnt==5) {
[[[(UIView *)[self.scrollView viewWithTag:index] subviews] objectAtIndex:3] removeFromSuperview];
//[[[(UIView *)[self.scrollView viewWithTag:index] subviews] objectAtIndex:4] removeFromSuperview]; <-- this crash
[[[(UIView *)[self.scrollView viewWithTag:index] subviews] objectAtIndex:3] removeFromSuperview];
}
コメント行はもちろん、実行することができないが、しかし4サブビュー。 したがって、私は同じインデックス上で2回指しているビューを削除する必要があります。 削除するのが安全な方法かどうかを知りたいのですが、最後のビューが配列[[self.scrollView viewWithTag:index] subviews]
の1つ下の位置に移動されていることを確認したいと思います。
希望です。 おかげ
また、特定のタグを持つビューが存在しない場合は、nilを返すだけで、好きなメソッドを呼び出すことができます。 – jrturton
応答ありがとう、私はこれを知っているが、子サブビューにタグがない、私はちょうどそこに4または5サブビューがあることを知っています。 – Mat
あなたの子供のビューへのアクセスは、私にとって本当に壊れやすいものです。それらにタグを付けるか、それらを識別する他の方法がある(例えば、インスタンス変数や辞書の中でそれらへの参照を保持するなど) –