2012-02-10 2 views
0

을 추가 한 UIView를 제거하는 방법은 초기화하고 UIImageView을 호출합니다. 나중에이보기를 제거합니다. 내 코드는 다음과 같습니다.다음 이벤트가 실행될 때

self.myView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 10, 320, 460)]; 
[myView setBackgroundColor:[UIColor whiteColor]]; 
self.myView.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"someImage.png"]]; 

[self.tableView addSubview:self.myView]; 

나중에 인스턴스를 제거하고 내 코드를 제거하면 다음과 같습니다.

[self.tableView bringSubviewToFront:self.myView]; 
[self.myView setHidden:YES]; 
[self.myView removeFromSuperview]; 

내가 가지고있는 문제는 테이블 뷰에 추가 한 뷰가 제거되지 않는다는 것입니다. 왜 이것이 hapenning인지, 그리고 그것을 해결하기위한 계획적인 해결책을 알아야합니다.

참고 : 디버깅했으며 코드의 제거 부분이 실행되지만 아무것도 제거되지 않습니다.

+0

hidden = YES로 설정하지 않으면 여전히 문제가 있습니까? – bryanmac

+0

예, 변경하지 않았습니다. – sharon

+0

UIView의 인스턴스를 두 개 이상 테이블에 추가 했습니까? 제거한 후에는 테이블 뷰의 하위 뷰를 인쇄하여 남아있는 하위 뷰를 확인하십시오. – colbadhombre

답변

0

는이 같은 행동이 백그라운드 스레드에서 UIKit 객체 (같은 UIView들)을 수정하는 것입니다 발생할 수 있습니다 만 [self.myView removeFromSuperview];

+0

왜? 그녀가 가진 것과는 다른 무엇을 할 것인가? – colbadhombre

0

일반적인 문제를 시도해야 도움이됩니다. UIKit은 일반적으로 스레드 안전하지 않으며 백그라운드 스레드에서 호출하면 종종 앱의 표시 상태가 변경되지 않습니다.

두 번째 코드 블록을 실행하는 메서드는 무엇이며 어떻게 호출됩니까?

FWIW, bringSubviewToFront:setHidden:은 불필요합니다. removeFromSuperview은보기를 제거하는 데 필요한 모든 것이어야합니다.

0

내비게이션 컨트롤러처럼 tableview 위에 다른 컨트롤러가 있는지 궁금합니다. removeFromSuperview는 실제로 원치 않는 결과를주는 참조할까요?

관련 문제