繁体   English   中英

在视图控制器之间切换

[英]Switching between view controllers

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

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

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

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

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

1st view controller = MainViewController 2nd VC = FlipSideViewController 3rd 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]; 
}

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

如用户523234所建议,您需要做的就是打电话

[self dismissModalViewControllerAnimated:YES]

在里面

- (IBAction)goBack:(id)sender 

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

现在不起作用的原因是,当您按下第二个视图控制器中的完成按钮时,它将调用

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM