我使用xcode 5,1和ios 6,0为iPhone创建应用程序

我想创建一个包含我的应用程序名称的视图,该视图在3秒后将被重定向到另一个包含正在处理我的应用程序的视图

我的Main.storyboard像这样

在我的 class Icoz中,我有

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSLog(@"yesss");
    Demmarage *d = [[Demmarage alloc] init];
    [self.navigationController pushViewController:d animated:YES];
    NSLog(@"merdeee");
}

但是当我构建我的应用程序时什么也没发生

我如何执行我的应用程序,我希望显示“icoz”视图3秒钟,然后显示“myblan”视图

最佳答案

首先,我看不到您的initialViewController是否是UINavigationViewController。如果不是,则您的statemant self.navigationController为nil,这可能是什么都没发生的原因”

在情节提要中可以看到segue,可以在viewDidAppear中延迟执行此segue:

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

    double delayInSeconds = 3.0; //seconds to wait
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
        [self performSegueWithIdentifier:@"TheNameOfTheSegue" sender:self];
    });
}

没有GCD也没有安全的另一种选择是以下几种-只需使用导航控制器即可进行推送:
-(void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    self.timer = [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(pushDemmarage:) userInfo:nil repeats:NO];
    //or use the following line instead of NSTimer
    //[self performSelector:@selector(pushDemmarage:) withObject:nil afterDelay:3];
}

-(void)pushDemmarage:(id)sender
{
    Demmarage *d = [[Demmarage alloc] init];
    [self.navigationController pushViewController:d animated:YES];
}

10-08 05:56