2009-09-13 3 views
0

보기에 레이블을 추가합니다. UILabel * titleLabel = [[UILabel alloc] initWithFrame : CGRectMake (10.0f, 320.0f, 300.0f, 75.0f)]; [titleLabel setText : [BusinessLogic 인스턴스] .homeMessage];컨트롤이 이미 뷰에 추가되었는지 확인하는 방법?

그런 다음 다른보기로 이동하여 다시 방문합니다. 이로 인해 서로 위에 두 개의 레이블 컨트롤이 생깁니다. 내가하고 싶은 일은 : 레이블 컨트롤이 이미 추가되었는지 확인하십시오. 추가하지 않을 경우 텍스트를 설정하십시오. 그렇다면 텍스트를 설정하십시오.

가장 좋은 방법은 무엇입니까? 나는 그것을하는 방법의 두통 역겨운 아이디어가 이미있는 것처럼 적절한 방법을 배우고 싶다.

감사합니다. 나

답변

3

당신은 수퍼 속성을 확인할 수 있습니다

if (titleLabel.superview == self) { 
} 

+0

내가 좋겠 말하자면, 함수 밖에서 UILabel 변수를 먼저 이동해야합니다. 그런 다음 nil 여부를 확인하십시오. – CiNN

+0

나는 CiNN에 동의한다 - 고마워요. – amok

1
if (titleLabel.superview != someView) { 
    [someView addSubview:titleLabel]; 
} 
1

가 클래스에 속성을 추가 (가정 "자기"보기 당신이 레이블을 추가하는입니다) 라벨에 대한 참조를 저장하십시오. titleLabelnil 인 경우

// header 
@property (nonatomic, retain) IBOutlet UILabel *titleLabel; 
// implementation 
@synthesize titleLabel; 

UILabel 인스턴스를 생성하고 할당 : 당신이 어디를 저장하지 않는 경우, 당신은 미래에 쉽게 해당 텍스트를 변경할 수 없습니다

if (self.titleLabel == nil) { 
    UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(10.0f, 320.0f, 300.0f, 75.0f)]; 
    self.titleLabel = titleLabel; 
    [titleLabel release]; 
    // add to the view here. 
} 
self.titleLabel.text = newText; 
+0

작은 오타가 있습니다 : @synthesis -> @synthesize –

관련 문제