31

我有一个以导航控制器开头的应用程序。这个导航控制器可以打开模态视图控制器:

- (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:我在情节提要中设置的过渡动画执行转场。没有动画怎么办?这项任务还有另一种方法吗?

4

4 回答 4

48

在 Storyboard 中复制您的 segue,并为第二个提供不同的 ID。

然后,您可以在新版本中更改过渡。

于 2013-04-24T14:29:40.787 回答
39
 self.performSegueWithIdentifier("loginSegue",sender: nil)

在此处输入图像描述

于 2015-10-17T05:47:45.967 回答
9

我正在使用此代码段请求授权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;
});

授权后,后退转换会根据我的需要进行动画处理。

于 2014-10-01T20:31:06.887 回答
6

我们可以的另一种方式

YourViewController *aYourViewController = [self.storyboard   instantiateViewControllerWithIdentifier:@"aYourViewControllerIdentifier"];
[self.navigationController pushViewController:aYourViewController animated:NO];

@"aYourViewControllerIdentifier"并在情节提要中添加to view 控制器。

于 2015-01-01T14:19:15.423 回答