切换视图控制器

时间:2011-12-20 00:45:51

标签: ios xcode button view viewcontroller

我有三个视图控制器。我使用了flipsideproject模板,然后添加了另一个视图控制器。

第一个视图控制器上有一个按钮,可以转到第二个视图控制器。第二个视图控制器上有一个按钮,可以返回第一个视图。在第一个和第二个之间切换时,这些按钮始终有效。

与第二和第三视图控制器的情况相同。当我尝试在第一个到第二个到第三个之间转换然后再转到第一个时,它不起作用。

(1 - > 2 - > 3 - > 2 - / - > 1)我画得不好的图描绘了这种情况。

我把所有后退按钮连接到后面的IBAction,我认为这是问题所在。然后我做了另一个IBAction,但它没有解决问题。

第一个视图控制器= MainViewController 第二个VC = FlipSideViewController 第3个VC = ChooseAlarmSound

这是为了2 - > 1(这是我认为的问题。它有时会起作用)

- (IBAction)done:(id)sender 
{ 
   [self.delegate flipsideViewControllerDidFinish:self]; 
} 

这是为了2→3

- (IBAction)chooseSound:(id)sender 
{ 
    ChooseAlarmSound *controller = [[[ChooseAlarmSound alloc] initWithNibName:@"ChooseAlarmSound" bundle:nil] autorelease]; 
    controller.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
    [self presentModalViewController:controller animated:YES]; 
}

这是为了3→2

- (IBAction)goBack:(id)sender 
{ 
    FlipsideViewController *controller = [[[FlipsideViewController alloc] initWithNibName:@"FlipsideViewController" bundle:nil] autorelease];
    controller.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
    [self presentModalViewController:controller animated:YES]; 
}

2 个答案:

答案 0 :(得分:3)

您使用modalviewcontroller呈现了第3个VC(从2到3)。但后来你尝试使用另一个modalVC回到第二个VC(从第3个到第2个)。这不会让你回到之前的第二个VC的实例。您需要使用dismissmodalviewcontrolleranimated方法来执行此操作。在关于modalviewcontroller类参考的Apple网站上查看详细信息。

答案 1 :(得分:0)

根据user523234的建议,您只需要调用

[self dismissModalViewControllerAnimated:YES]

中的

- (IBAction)goBack:(id)sender 

第三个视图控制器的方法,而不是你正在做的,它正在创建第二个视图控制器的另一个实例并呈现它。

它现在不能正常工作的原因是因为当您按下第二个视图控制器中的完成按钮时,它会调用

 - (IBAction)done:(id)sender 
{ 
   [self.delegate flipsideViewControllerDidFinish:self]; 
}

正在向第二个视图控制器的委托发送消息,在您从3> 2开始的情况下,您没有设置该消息。