Posted
Filed under iphone
// UILabel 생성하기
UILabel *aLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 15, 40, 20)];
// label에 태그 넣기
aLabel.tag = 1;
// 글자쓰기
aLabel.text = @"Hello World";
// 라벨을 뷰에 올리기
[self.view addSubview:aLabel];


하위에 있는 뷰 모두 지우기 1

// With some valid UIView *view:
for(UIView *subview in [self.view subviews])
{
    [subview removeFromSuperview];
}

하위에 있는 뷰 모두 지우기 2
while ([self.view.subviews count] > 0)
{
    [[[self.view subviews] objectAtIndex:0] removeFromSuperview];
}

지정한 태그의 subview 지우기
[[self.view viewWithTag:1] removeFromSuperview];

지정 태그 이외의 subview 지우기
for (UIView *subview in [self.view subviews])
{
    if (subview.tag != 1) {
        [subview removeFromSuperview];
    }
}





특정 클래스의 subview 지우기
for(UIView *subview in [self.view subviews])
{
    if([subview isKindOfClass:[UILabel class]])
    {
        [subview removeFromSuperview];
    }
}




 
if (self.blueViewController.view.superview == nil)
이 문장은 blueViewController가 슈퍼뷰의 멤버에 포함되어 있는가를 검사할 떄 사용합니다.
위와 같이 nil이라면 포함되어 있지 않다는 의미입니다.
이것은 실제로 아직 메모리에 없을 수도 있고, 메모리에 있지만 슈퍼뷰에 포함되지 않고 있을 수도 있습니다.
즉, [self.view insertSubview:blueController.view atIndex:0]; 이 문장에 의해 메인 즉 self의 서브 뷰로 등록되지 않았을 경우에 해당됩니다.
위 구문이 실행되면 메인뷰의 서브뷰로 등록되고 atIndex가 0이기 때문에 가장 앞에 표시되어 보이게 될 것입니다. 반대로 메인뷰에서 제거하려면 아래와 같이 합니다.

[blueViewController.view removeFromSuperview];

위 코드는 blueViewController를 슈퍼뷰에서 제거하게 되어 더이상 화면에 나타나지 않게 됩니다.

이상태에서는 화면 표시만되지 않을 뿐 여전히 blueViewController는 메모리에 남아있습니다.

메모리에서 제거하려면 self.blueViewController = nil;를 사용하면 됩니다.













2011/06/09 06:37 2011/06/09 06:37