根据NSUserDefaults值加载不同视图而不使用segue

时间:2014-03-09 22:58:16

标签: ios

我的初始视图控制器中有以下内容。我检查一下是否设置了URL;如果它是我的观点。

发生这种情况时会有动画。我想避免做segue并直接加载视图而不进行任何动画。 (我希望它看起来像是他们的第一个观点)。有没有办法做到这一点?我需要修改app delegate吗?什么是最佳做法?

- (void) viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    self.navigationController.toolbarHidden = YES;
    self.navigationController.navigationBarHidden = YES;

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSString* url = [defaults objectForKey:@"storeUrl"];

    if (url != nil)
    {
         [self performSegueWithIdentifier:@"continueToStore" sender:self];
    }
}

2 个答案:

答案 0 :(得分:1)

这取决于实际持有您的视图的控制器。如果你有导航控制器,你可以这样做:

// remove topmost controller so user won't get back here
[self.navigationController popViewControllerAnimated:NO];

// instantiate your controller (set identifier in storyboard's Identity section)
StoreWebViewController *storeController = [self.storyboard instantiateViewControllerWithIdentifier:@"StoreWebViewController"];

// push new controller on top of a stack
[self.navigationController pushViewController:storeController animated:NO];

使用此代码代替您的segue(请参阅下面的代码)

- (void) viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    // rest of code omitted
    ...

    if (url != nil)
    {
        // code goes here
    }
}

答案 1 :(得分:0)

只需使用

[yourNavigationController pushViewController:new_view_controller animated:NO];

这当然不应该在- (void) viewDidAppear中完成。