0

我使用 Xcode 4 中的实用程序应用程序模板创建了我的应用程序。

我希望我的应用程序在第一次启动时显示反面,以便用户可以输入 URL。

在我的 mainViewController 我有:

- (void)viewDidAppear:(BOOL)animated
{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    if(![defaults stringForKey:@"url"]){
        // Flip to the back page
        [self showInfo: self];

        NSLog(@"No url, flip");
    }else{
        NSLog(@"dont flip");
    }
}

- (IBAction)showInfo:(id)sender
{
    FlipsideViewController *controller = [[FlipsideViewController alloc] initWithNibName:@"FlipsideView" bundle:nil];
    controller.delegate = self;

    controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentModalViewController:controller animated:YES];

    [controller release];
}

记录“无 url,翻转”,调用 showInfo 方法,但不翻转。我究竟做错了什么?

4

2 回答 2

1

只需在代码中编辑一行。

- (void)viewDidAppear:(BOOL)animated
{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    if(![defaults stringForKey:@"url"]){
        // Flip to the back page
        [self performSelector:@selector(showInfo:) withObject:self afterDelay:0.1];

        NSLog(@"No url, flip");
    }else{
        NSLog(@"dont flip");
    }
}
于 2011-09-09T19:52:33.173 回答
0

我认为你的showInfo:方法是在正确的轨道上,但不会奏效。这是我在一个应用程序中的一些代码示例,它可以满足您的需求,我相信:

    PersonDetailViewController *pvc = [[PersonDetailViewController alloc]
                             initWithNibName:@"PersonDetailView" bundle:nil];

    UIView *container = self.parentViewController.tabBarController.view;

    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.5];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight
                           forView:容器缓存:YES];
    [容器添加子视图:pvc.view];
    [pvc viewWillAppear:YES];
    [self viewWillDisappear:YES];
    [UIView 提交动画];

所有这一切的重点是,您必须提供有关您希望实现的过渡的更多信息。有许多UIView类方法(如此处所示)处理设置视图转换和其他基于视图的动画。

那么这是在做什么呢?该代码将新视图控制器的视图(pvc.view)添加为“容器”的子视图。在这个应用程序中,“容器”视图是在新视图 (pvc.view) 被翻转时被翻转的视图。

viewWillAppear:调用新视图和旧视图也很重要,viewWillDisapear:因此当视图来来去去时,您期望发生的所有正确的事情都会发生。[这个食谱可能被一些人认为是“老派”。在 iPhone OS 2.x 时代(当时不称为 iOS),Utility 模板有类似的代码,调用 viewWillAppear 和 viewWillDisappear 等。它今天仍然有效,fwiw。此处显示的代码位于应用商店的运输应用程序中,因此可以说它仍然符合犹太教规。:-)]

值得注意的是,在 PersonDetailViewController(在本例中)中,为了保持一致性,有类似的代码将所有内容都翻转回来。

于 2011-09-09T19:43:28.610 回答