2011-04-26 6 views
0

활동 표시기가있는 하위보기를보아야합니다. 이 내 코드는하지만 서브 뷰가 표시되지 않습니다활동 표시기로 하위 뷰를 보는 방법은 무엇입니까?

@interface ProgressViewController : UIViewController { 
    IBOutlet UIActivityIndicatorView *myActivityIndicator; 
} 
@property (nonatomic, retain) IBOutlet UIActivityIndicatorView *myActivityIndicator; 
@end 

@implementation ProgressViewController 
@synthesize myActivityIndicator; 

- (void)viewDidLoad { 
    [myActivityIndicator startAnimating]; 
    [super viewDidLoad]; 
} 
- (void)viewWillDisappear:(BOOL)animated { 
    [myActivityIndicator stopAnimating]; 
} 
@end 


#import "ProgressViewController.h" 

@interface MyViewController : UIViewController { 
    ProgressViewController *progressViewController; 
} 

@property (nonatomic, retain) ProgressViewController *progressViewController; 
@end 

@implementation MyViewController 

@synthesize progressViewController 

- (void)viewDidLoad 
{ 
    progressViewController = [[ProgressViewController alloc] initWithNibName:@"ProgressViewController" bundle:nil]; 
    [self.view addSubview:progressViewController.view]; 
    sleep(4); 
    [progressViewController.view removeFromSuperview]; 

    [super viewDidLoad]; 
} 
@end 
+0

이 코드에 XIB가 연결되어 있습니까? – Tim

답변

2

가 여러 가지 원인이, 그리고 여전히 당신이 보낸 코드에서 약간 불분명 수있는 하나입니다.

[self performSelector:@selector(removeMyProgressView:) withObject:progressViewController.view afterDelay:4.0]; 
: -

먼저, (4) 코드에서 잠을 사용하지 않아야은 아이폰 OS 사용자 입력, 화면 새로 고침 등을 지원하기 위해 실행되는 응용 프로그램 엔진을 망쳐 놨 귀하의 코드는 쉽게 변경 될 수 있습니다

이고 removeMyProgressView : 함수에서 removeFromSuperview이 있습니다. '

progressViewController = [[ProgressViewController alloc] initWithNibName:@"ProgressViewController" bundle:nil]; 

그것은 그렇지 않으면

self.progressViewController = [[ProgressViewController alloc] initWithNibName:@"ProgressViewController" bundle:nil]; 

당신이 setter 함수 (@sythesized 속성)를 호출하지 않는해야하고, 객체 ISN :

또한,이 코드 줄은 버그가 유지됨. 그것은 공개 될 수 있으며 따라서 당신은 그것을 보지 못합니다. 이 이런 것도 잘하지 않는 경우

, 우리는 그것을 마구하겠습니다 :)

행운을 빕니다!

Oded.

0

전화 [super viewDidLoad] 아무것도하기 전에 - (void)viewDidLoad 방법

+0

고마워, 나는 그것을 시도하지만 같은 문제! – Dany

1

-viewDidLoad 메서드의 모든 항목은 하나의 런 루프에서 발생합니다. 즉, 시스템에 실제로 그리는 기회를주지 않고 활동 표시기를 추가 및 제거 할 수 있습니다. 수면 4 초는 도움이되지 않습니다. 그것들은 runloop을 끝내기까지 더 오래 걸릴뿐입니다.

관련 문제