我有一個很大的應用程序,其中有很多使用故事板的轉換。 過渡應該是從右到左,所以我做了一個自定義的繼續來執行它。奇怪的自定義segue行爲 - 導航堆棧損壞
當我使用常規轉換時,我保存的每個視圖控制器都會保留,直到彈出它爲止。
雖然使用自定義segues並不保留先前的控制器(推送當前控制器的人),但當我彈出時,控制器的實例會獲取不同的內存地址,這表示指針已更改。
這是自定義推送SEGUE:
UIViewController *sourceViewController = (UIViewController*)[self sourceViewController];
UIViewController *destinationController = (UIViewController*)[self destinationViewController];
CATransition* transition = [CATransition animation];
transition.duration = .3f;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromLeft;
[sourceViewController.navigationController.view.layer addAnimation:transition
forKey:kCATransition];
[sourceViewController.navigationController pushViewController:destinationController animated:NO];
和自定義彈出SEGUE:
[self performSegueWithIdentifier:@"SearchToMenu" sender:self];
似乎沒有什麼:
UIViewController *sourceViewController = (UIViewController*)[self sourceViewController];
UIViewController *destinationController = (UIViewController*)[self destinationViewController];
CATransition* transition = [CATransition animation];
transition.duration = .3f;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromRight;
[sourceViewController.navigationController.view.layer addAnimation:transition
forKey:kCATransition];
[sourceViewController.navigationController pushViewController:destinationController animated:NO];
我用這種方法進行的SEGUE工作,我還沒有找到任何網上。
如果我需要提供更多的代碼示例,屏幕截圖等,請讓我知道。
感謝您的回答 這就是問題..太愚蠢了,我沒有看到它。 無論如何,我沒有看到故事板中的任何腐敗。它似乎工作得很好。 你會建議我使用普通的.xib文件嗎? – alon7
如果它正在爲您工作,繼續使用故事板 - 它有助於您瞭解導航邏輯的概述。 – foundry