2012-08-14 3 views
0

현재 메서드의 뷰를 하위 뷰로 메서드의 다른 뷰에 추가하려면 다음 줄을 사용하고 있습니다.다른 메서드에서 서브 뷰 숨기기

[self.landscape addSubview:[self makeSpin]];

이 잘 작동하고, 모두가 멋쟁이,하지만 지금은 그것을 숨기는 방법을 알 필요가있다.

분명히 [self.landscape setHidden:[self makeSpin]];은 트릭을 수행하지 않습니다.
누구든지이 작업을 수행하는 방법에 대한 간단한 샘플을 제공 할 수 있습니까? 또는 올바른 방향의 한 지점조차 도움이됩니다.

미리 감사드립니다.

답변

1

저는 makeSpin이 반환하는 뷰가 인스턴스 변수라고 가정합니다 (그렇지 않으면 어떻게 든 인스턴스 변수로 만들거나 태그를 사용해야합니다). 이 경우,이 시도 :

[self makeSpin].hidden = YES; 
0

makeSpin 인스턴스 변수에 할당되지 않은 오토 릴리즈 뷰를 돌려주는 경우, 다른 그것을 찾기 위해 노력보다는 그것에 모든 액세스를하지 않을거야 self.landscape의 하위 뷰 배열입니다. 지금까지 할 일은 클래스에 속성을 생성하고 그것을 사용하여 새로운 하위 뷰의 값을 유지하는 것입니다. 그러면 나중에이 클래스와 함께 재생할 수 있습니다. viewDidUnload 메서드에서이 속성을 nil로 설정하는 것을 기억해야합니다. 동일 [self makeSpin] 수익률은 다음과 같은보기를 제거 할 수 있습니다 (작성 및 새 뷰가 아닌 자동 해제보기를 반환하지 않음) 항상 반대 경우

1

:

[[self makeSpin] removeFromSuperView]을;

[[self.landscape viewWithTag:7] removeFromSuperview]; 
: 당신처럼 쓸 필요가보기를 제거하기위한

UIView *tempView = [[self makeSpin] retain]; 
tempView.tag = 7; 
[self.landscape addSubview:tempView]; 
[tempView release]; 

:

다른 당신은

[self makeSpin]). 

처럼에서 돌아보기 (하위 뷰에 태그를 추가해야합니다

또한이 루프를 사용할 수 있습니다.

for (UIView *subview in [self.landscape subviews]) 
{ 
    if (subview.tag == 7) 
    { 
     [subview removeFromSuperview]; 
    } 
}