簡體   English   中英

如何執行沒有過渡動畫的segue

[英]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。

然后,您可以更改新版本中的轉換。

 self.performSegueWithIdentifier("loginSegue",sender: nil)

在此輸入圖像描述

我正在使用此代碼段在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM