1

看起來這個話題出現了很多。我通讀了幾個答案,但沒有一個與我的相同,所以請原諒我,如果你以前見過類似的話。不平衡的調用開始/結束外觀轉換爲(我相信這是UINavigationController相關)

我所有的UIViewControllers都由UINavgationController控制。在第一個UIViewController(SMOnboardingPhotoMarketingViewController)上,我調用我的鑰匙串包裝類來查看是否有任何人登錄(應用程序恢復)。如果是這樣,我調用segue去我的主登錄屏幕(SMThumbnailViewController),我得到錯誤消息:不平衡調用開始/結束外觀轉換。

我已經檢查了所有的視圖控制器生命週期調用,以確保我調用[超級方法],如果我重複它們。完成。

除此之外,這只是所有轉換的標準推式類型。我不明白這個調用segue的不同之處,而不是按鈕操作觸發的所有其他調用。下面是我的第一個視圖控制器代碼:

-(void)viewDidAppear:(BOOL)animated{ 
    [super viewDidAppear:animated]; 
    [self loadScrollViewContent]; 

    __weak SMOnboardingPhotoMarketingViewController *weakSelf = self; 
    [SMAuthentication validateStoredTokenWithCompletion:^(BOOL valid) { 
     if(valid){ 
      NSLog(@"Logged in. Continue to thumbs page"); 
      [weakSelf performSegueWithIdentifier:kSeguePhotoMarketingToThumbnails sender:self]; 
     } 
     else{ 
      [SMAuthentication logOut]; 
      NSLog(@"invalid credentials stored. User must log in "); 
     } 
    }]; 
} 

我注意到,在我的主視圖控制器(上面的代碼導航到一個),viewDidLoad中被調用,但viewDidAppear不會被調用。什麼會導致這種不平衡?

編輯:添加信息。我應該說明,如果我將segue調用移動到該塊的外部,則轉換正常進行,沒有錯誤。例如:

// I know this is ugly. It is for testing only 
-(void)viewDidAppear:(BOOL)animated{ 
    [super viewDidAppear:animated]; 
    [self loadScrollViewContent]; 
    __block BOOL complete = NO; 
    __block BOOL isValid = NO; 

    [SMAuthentication validateStoredTokenWithCompletion:^(BOOL valid) { 
     if(valid){ 
      NSLog(@"Logged in. Continue to thumbs page"); 
      isValid = YES; 
     } 
     else{ 
      [SMAuthentication logOut]; 
      NSLog(@"invalid tokens stored. User must log in "); 
     } 
     complete = YES; 
    }]; 



    while (!complete) { 
     [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]; 
    } 

    if(isValid){ 
     [self performSegueWithIdentifier:kSeguePhotoMarketingToThumbnails sender:self]; 
    } 

} 
+0

實際上,它看起來像我的SMAuthenticate調用兩次調用完成塊會給出錯誤的意義。但是,這是另一個故事。 – VaporwareWolf

回答

0

你可能已經實施了以下的ViewController定製容器方法:

- (void)endAppearanceTransition 
- (void)beginAppearanceTransition:(BOOL)isAppearing animated:(BOOL)animated 

我寫一次,忘了他們在一個基類,它們使用時搞砸整個外觀轉發到子控制器故事板。

相關問題