2012-04-17 3 views
1

내 앱에서 활동 표시기를 만들려고합니다. 스토리 보드를 사용하고 있고 다른보기를 밀고있는 버튼을 만들었습니다.iOS 5 : addSubview의 이상한 동작

- (IBAction)openView { 
    NSLog(@"View is loading"); 
    @try { 
     UINavigationController *nav = [storyboard instantiateViewControllerWithIdentifier:@"viewOpenSegue"]; 
     [nav setModalPresentationStyle:UIModalPresentationFullScreen]; 
     [self presentModalViewController:nav animated:YES]; 
    } 
    @catch (NSException *exception) { 
     NSLog(@"Error"); 
    } 
    @finally { 
     NSLog(@"View loaded"); 
    } 
} 

Everythings 좋은 지금까지 : 여기

내가 다른보기를 열 방법이다. 나는보기가 열리기 전에 로그를 얻었고 완전히로드 된 후에는 두 번째 로그를 보았다.

하지만 addSubview 메서드를 사용하려면 이상한 동작이 발생합니다.

NSArray *subviewArray2 = [[NSBundle mainBundle] loadNibNamed:@"View" owner:self options:nil]; 
loadingView = [subviewArray2 objectAtIndex:0]; 

내보기를로드하는 방법입니다. 그리고 나는 /이 같이 제거 추가

[self.view addSubview:loadingView]; 
//@try block 
//@catch block 
//@finally 
{ 
[loadingView removeFromSuperview]; 
} 

내가보기가 나타나고 화면에 사라질 것으로 예상된다. 그러나 밀려나는보기가 갑자기 사라지기 직전처럼 1 밀리 초처럼 보입니다.

viewDidLoad에서이 방법을 추가하면 나타납니다.

나는 비슷한 질문을 보았지만 저를 도와주지 않았습니다. 누구나 단서가 있습니까? 다른 것을 시도해야합니까? 사전에

감사합니다.

+0

궁금 해요 : 여기

는 최적화 된 코드인가? – SomaMan

+0

왜냐하면 나는 그것이 활동의 ​​경계를 탐지하는 최상의 솔루션이라고 생각했기 때문입니다. 로드 중일 때 (...라고 가정) 시도하는 동안 오류가 발생하면 마지막으로로드 패널을 제거하십시오. – kubilay

답변

0

내가 selector을 사용하지 않았기 때문입니다. this question을 참조하십시오. 왜 당신이 사용하는 @/@ 캐치 블록을 시도 -

[self.view addSubview:loadingView]; 
[self performSelector:@selector(openView) withObject:nil afterDelay:0]; 
0

이 nib 파일 View.xib에 파일 소유자가 있습니까?

+0

있습니다. 내가 말했듯이 viewDidLoad 아래에로드 할 때 아무런 문제가 없습니다 ... – kubilay

0

첫 번째 viewdidload가 viewdidapper 메소드보다 실행되기 때문에 발생합니다. viewdidappear로드 할 때마다 u 푸시 또는 팝업보기를 그래서 view load에 코드를 작성하여보기로드의 맨 처음 실행하려면 코드를 작성하십시오.

+0

처음로드하지 않으려 고 버튼을 클릭 한 후로드하려고합니다. 그래서 - (IBAction) openView 함수 아래에 코드를 씁니다. viewDidLoad에서 사용하면 처음으로로드됩니다. 나중에 시도하면로드되지 않습니다. – kubilay

+0

푸시 된보기가 나타나고 갑자기 사라지기 직전의 1 밀리 초에 대해 나타나는 내용은 무엇입니까? – freelancer

+0

중요하지 않습니다. 문제는 새보기가 열리는 동안 나타나지 않는다는 것입니다. – kubilay