[英]How to perform segue with no transition animation
我有一個以導航控制器開始的應用程序。 該導航控制器可以打開模態視圖控制器:
- (void)openModalController:(id)sender
{
[self performSegueWithIdentifier:@"SegueIdentifier"];
}
但是當用戶使用url方案打開應用程序時,我想在打開模態控制器的情況下顯示應用程序。 所以我添加了一些方法並嘗試:
// Controller
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated]; // animated == NO in initial loading
if (_shouldOpenModalController) {
[self openModalController:nil];
}
}
- (void)setShouldOpenModalController:(BOOL)flag
{
_shouldOpenModalController = flag;
}
// AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
if (launchOptions) {
UINavigationController *nc = (UINavigationController *)self.window.rootViewController;
MyViewController *c = (MyViewController *)[ns topViewController];
[c setShouldOpenModalController];
}
}
但是這里有一個問題: openModalController:
使用我在故事板中設置的過渡動畫執行segue。 如何在沒有動畫的情況下完成? 這項任務還有另一種方法嗎?
在Storyboard中復制您的segue,並為第二個提供不同的ID。
然后,您可以更改新版本中的轉換。
我正在使用此代碼段在viewDidLoad
請求授權:
[UIView setAnimationsEnabled:NO];
self.view.hidden = YES;
[self performSegueWithIdentifier:@"segue_auth" sender:self];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.4 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[UIView setAnimationsEnabled:YES];
self.view.hidden = NO;
});
授權后,我可以根據需要設置后向過渡動畫。
還有一種方法
YourViewController *aYourViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"aYourViewControllerIdentifier"];
[self.navigationController pushViewController:aYourViewController animated:NO];
並添加@"aYourViewControllerIdentifier"
以查看故事板中的控制器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.