1

在 iOS6 之前我有以下代码工作,但我找不到使用 iOS6、故事板和 Xcode 4.5 的简单方法

-(IBAction) ButtonPressed:(id)sender{

    if(condition == 1]) {

        FirstController *firstController = [[FirstController alloc]initWithNibName:nil bundle:nil];
        firstController.delegate = self;
        firstController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
        [self presentViewController:firstController animated:NO completion:nil];
        [firstController release];
    }

    SecondController *secondController = [[SecondController alloc]initWithNibName:nil bundle:nil];
        secondController.delegate = self;
        secondController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
        [self presentViewController:secondController animated:NO completion:nil];
        [secondController release];

}

这曾经工作得很好。如果我将代码保留在 iOS6 中,则所有控制器都不会正确显示。尝试将控制器导航转换到情节提要也无济于事,因为看起来我只能使用一个动作来触发使用从 ButtonPressed 到其中一个或另一个的模态 segue 的转换。在第二个控制器的viewdiload中嵌入第一个控制器有其自身的问题。如果它在 viewdidload 上,将无法像其他人所经历的那样正常工作。如果我把它放在 viewdidappear 上,第二个控制器将首先出现,创建一个令人不快的 UI。有任何想法吗?

4

1 回答 1

0

一个视图控制器一次只能呈现一个视图控制器。需要一种不同的方法。例如,您可以使用导航视图控制器来完成您希望完成的任务。如果用户已登录,则将上传视图控制器设置为导航视图控制器的根视图控制器。如果用户未登录,则将根视图控制器设置为登录视图控制器。当用户登录时,登录视图控制器将在其委托中通知用户已登录,然后您可以将上传视图控制器推送到导航堆栈中。

- (IBAction)buttonPressed:(id)sender{

    UINavigationController* nvc;

    if(condition == 1) {
        FirstController *firstController = [[FirstController alloc]initWithNibName:nil bundle:nil];
        firstController.delegate = self;
        firstController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
        nvc = [[UINavigationController alloc] initWithRootViewController:firstController];
        [firstController release];
    }
    else {
        SecondController *secondController = [[SecondController alloc]initWithNibName:nil bundle:nil];
        secondController.delegate = self;
        secondController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
        nvc = [[UINavigationController alloc] initWithRootViewController:secondController];
        [secondController release];
    }

    [self presentViewController:nvc animated:YES completion:nil];

    [nvc release];
}

//Login view controller delegate method
- (void)loginViewControllerDidLoginSuccessfully:(FirstController*)loginViewController{
    SecondController *secondController = [[SecondController alloc]initWithNibName:nil bundle:nil];
    secondController.delegate = self;
    secondController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [secondController.navigationItem setHidesBackButton:YES];
    [loginViewController.navigationController pushViewController:secondController animated:YES];
    [secondController release];
}
于 2012-12-08T04:42:06.050 回答