我正在寫一個基於故事板的iPhone應用程序和國家恢復工作。正常執行segues時,我希望讓它們具有動畫效果,但是當我恢復導航層次結構的多個級別時,我只希望最後一個segue進行動畫製作。除了設置兩套賽格 - 一套使用正常推塞格式,另一套使用自定義非動畫推塞格式 - 有什麼方法可以實現我想要做的?推動沒有動畫的賽格
13
A
回答
14
可以直接操縱視圖控制器堆棧,而不管應用程序的segues或storyboard。
您可以使用這種技術來恢復視圖控制器的深層堆棧,並執行/動畫化一個單獨的視圖到頂部視圖控制器。 (您可能需要爲此創建特定的推送隊列。)
例如,要還原兩個視圖控制器堆棧,可以執行以下操作。在這個例子中,假設現有視圖控制器上的某些操作導致了狀態還原,但您可以輕鬆地從App Delegate執行該操作。
[self performSegueWithIdentifier:@"Page2Express" sender:self];
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"Page2Express"])
{
// Get any state data you need to from Core Data
CoreDataType *valuePulledFromCoreData = // ...
// Set up the page 2 view controller as you normally would
Page2ViewController *page2ViewController = segue.destinationViewController;
page2ViewController.instanceVariable = valuePulledFromCoreData;
// Create a loose, page 1 view controller and set it up as required
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
Page1ViewController *page1ViewController = [storyboard instantiateViewControllerWithIdentifier:@"Page1ViewController"]; // Ensure you have this identifier set up in your storyboard
page1ViewController.instanceVariable = valuePulledFromCoreData;
// Add the page 1 view controller to the top of the navigation stack (to be later obscured in the segue by the page 2 view controller)
NSMutableArray *viewControllers = [[self navigationController].viewControllers mutableCopy];
[viewControllers addObject:page1ViewController];
[self navigationController].viewControllers = viewControllers;
}
}
如果相反,您更喜歡沒有動畫,那麼它更容易。您可以僅通過操作來自- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
和- (void)applicationWillEnterForeground:(UIApplication *)application
的視圖控制器堆棧(並且不使用任何段落)來恢復狀態。
無論哪種方式,將無縫地與您現有的故事板和賽段一起工作。
相關問題
- 1. 推動賽格動畫向左移動?
- 2. 如何設置模態賽格動畫與推動賽格動畫相同?
- 3. 使用沒有動畫賽格崩潰應用
- 4. 的TableView分裂動畫賽格瑞
- 5. UIView動畫沒有動畫
- 6. JQuery的動畫沒有動畫
- 7. 沒有動畫框架的Qt動畫
- 8. jQuery的動畫沒有動畫
- 9. 推賽格瑞
- 10. 推動視圖控制器沒有動畫導航欄
- 11. 推動動畫沒有陰影和停電
- 12. iOS:UIView動畫,沒有動畫發生
- 13. 動畫layoutIfNeeded UITableView沒有動畫UITableViewCells
- 14. 鏈式變換動畫沒有動畫
- 15. Zepto動畫回調沒有動畫
- 16. 動畫ViewGroup沒有動畫子視圖
- 17. 動畫gif沒有提交動畫
- 18. 核心動畫:光柵沒有動畫
- 19. 動畫列表最初沒有動畫
- 20. SurfaceView沒有動畫
- 21. presentModalViewController沒有動畫
- 22. CAShapeLayer沒有動畫
- 23. Flexslider沒有動畫
- 24. ViewFlipper沒有動畫?
- 25. CATransition爲賽格瑞動畫(前的iOS 7風格)
- 26. 自動推進畫廊動畫
- 27. 爲什麼我的動畫在他們所在的視圖是從模態賽格召喚時沒有動作?
- 28. 沒有jQuery的動畫JavaScript?
- 29. 沒有動畫的ListActivity
- 30. CSS3動畫沒有的onLoad
出於興趣,是否有理由操縱'viewControllers'數組而不是使用'pushViewController:animated:'? –
'pushViewController:animated:'不僅將視圖控制器添加到堆棧 - 它還刷新視圖以顯示該視圖控制器。在這種情況下,我們不想看到'page1ViewController',即使是短暫的,所以我們必須直接將它自己添加到堆棧中。 –