2013-05-13 4 views
1

UIView의 경계를 사용하여 UILabel을 만들고이를 viewDidLoad 메서드 내 UIView에 추가하려고했지만 UIView의 경계가 viewDidLoad 내부에서 여전히 null 인 것으로 나타났습니다. 그러나 데모 응용 프로그램을 보면 UIView의 경계가 이미 viewDidLoad에서 초기화되어 있습니다. 인터페이스에서 iOS ViewDidLoad의 UIView 범위

나는

@interface ViewController : UIViewController 
@property (weak, nonatomic) IBOutlet UIView *promotionView; 
@end 

을하고 난

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    UIView *container = [[UIView alloc] initWithFrame:self.promotionView.bounds]; 

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, container.bounds.size.height-100, 320, 20)]; 
    label.text = @"Promotion Title"; 
    [container addSubview:label]; 
    [self.promotionView addSubview: container]; 
} 

을하려고하지만 promotionView의 경계가 null 있기 때문에 작동하지 않습니다.

+0

변경'viewWillAppear' 또한 콘센트를 확인하기 위해이 코드는 promotionView''의 –

+0

경계를 연결'nil' 수 없습니다. 'promotionView' 자체는'nil'입니다. 실제로'promotionView'를 적절한 시각으로 설정하고 있는지 확인하십시오. – rmaddy

+0

@MidhunMP 이러한 코드를'viewWillAppear'에 넣는 것은 적절하지 않습니다. 'viewWillAppear'는 다른 뷰 컨트롤러가 nav 스택에서 푸시/팝되면 여러 번 호출 될 수 있습니다. – rmaddy

답변

1

당신은 viewDidAppear에 이런 식으로 작업을 수행 할 수 있습니다

-(void)viewDidAppear:(BOOL)animated { 
    static int first = 1; 
    if (first) { 
     UIView *container = [[UIView alloc] initWithFrame:self.promotionView.bounds]; 

     UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, container.bounds.size.height-100, 320, 20)]; 
     label.text = @"Promotion Title"; 
     [container addSubview:label]; 
     [self.promotionView addSubview: container]; 
     first = 0; 
    } 

} 
+0

고마워, 내 문제가 해결되었지만 데모 코드에서 사용할 수있는 동안 내 UIView 바운드가 viewDidLoad에서 0 인 이유에 대해 궁금합니다. 여기에서 데모 코드를 사용하고 있습니다. [link] (https://github.com/mpospese/MPFlipViewController) – harinsa

+0

@doog, 그는 데모에서 self.view.frame을 사용하고있는 것 같습니다. 컨트롤러의 self.view는 그렇지 않습니다. viewDidLoad시에는 nil이지만 추가 된 하위 뷰는 있습니다. – rdelmar

+0

@doog, viewDidLoad에서 하위 뷰의 경계가 0 인 것에 대한 내 의견을 수렴해야합니다. 자동 레이아웃이 켜져 있으면 기본적으로 설정되지만, 자동 레이아웃 인 경우 스토리 보드에서 설정 한 범위가 적용됩니다. 꺼져 있습니다. 나는 항상 그 위에 올려 놓고 프레임을 설정하는 대신 제약 조건을 사용하여 뷰의 크기를 조정합니다. – rdelmar