2011-10-15 3 views
2

addSubview마다 removeFromSuperview를 수행해야합니까? 예를 들어, pushWillAppear는 푸시 된 뷰가 팝업 될 때마다 호출됩니다. addSubview가 있으면 여러 번 호출됩니다.removeFromSuperview없이 여러 번 addSubview를 수행 할 수 있습니까?

- (void)viewWillAppear:(BOOL)animated { 
    [self.view addSubview:myView]; 
} 
+0

예, viewDidDisappear 또는 viewDidUnLoad 메서드에서보기를 제거해야합니다. 다른 방법은 레이어에 여러 레이어를 추가하는 것과 같은 좋은 방법입니다. –

답변

3

대신에 viewDidLoad에 코드를 삽입하지 않을 이유가 있습니까? 하지만 당신이 그것을 viewDidAppear에 보관하고 싶다면 괜찮습니다. 당신이 superview에 subview를 추가한다면 그것은 이미 subview 중입니다, 아무 일도 일어나지 않습니다. 실제로 모든 뷰에 하위 뷰를 추가하면 이전 뷰의 뷰에서 제거됩니다.

+0

myView는 전역 변수이므로 viewDidLoad에 넣을 수 없습니다. 푸시 된 뷰가 팝업되면 제거됩니다. 다시 추가해야합니다. 당신은 이전의 슈퍼 뷰에서 그것을 제거 할 것입니다. " ? myView를 추가하기 전에 시스템이 superview에서 myView를 제거한다는 의미입니까? 그래서 나는 나 자신을 벗을 필요가 없다. – user698200

+0

예. 예, 그렇다고 말하는 코멘트를 추가하지 않습니다. – morningstar

2

I가 더 필요하다고 생각하지 않는다 - 워드 프로세서를 인용,

뷰는 하나의 superview을 가질 수 있습니다. 뷰에 이미 수퍼 뷰가 있고 해당 뷰가 리시버가 아닌 경우이 메서드는 리시버를 새로운 수퍼 뷰로 만들기 전에 이전 수퍼 뷰를 제거합니다.

우리는 여러 가지 이유로 같은 superview에 여러 번 할당 할 수있는 여러 가지 이유로 지금까지 문제를 일으키지 않았습니다.

관련 문제