이것은 실제 문제가 아니며 단지 설명 만하면됩니다. 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 파단 . 그래서 동일한 인덱스에서 두 번 가리키는보기를 제거해야합니다. 안전하게 제거 할 수 있는지 알고 싶습니다. 마지막보기가 배열 [[self.scrollView viewWithTag:index] subviews]
의 한 위치 아래로 이동했는지 확인하고 싶습니다.
희망적입니다. 감사
또한 특정 태그가있는보기가 없으면 그냥 nil을 반환하고 원하는 모든 메서드를 호출 할 수 있습니다. – jrturton
응답 주셔서 감사합니다, 나는 이것을 알고 있지만 하위 subviews 태그가 없습니다, 난 그냥 4 또는 5 subviews있을 수 있습니다. – Mat
일부 예상 된 순서에 따라 자녀보기에 액세스하는 것은 내게 정말로 허약합니다. 그들에게 태그를 붙이거나 그들을 식별하는 다른 방법이 있어야합니다 (예 : 인스턴스 변수 또는 사전에서 참조를 유지하는 것). –