以模态方式呈现 ViewController

Posted

技术标签:

【中文标题】以模态方式呈现 ViewController【英文标题】:Presenting ViewControllers Modally 【发布时间】:2012-05-04 09:33:46 【问题描述】:

我正在制作文字游戏,我需要一些导航方面的帮助。该游戏从一个菜单开始,从该菜单中您可以单击“创建游戏”,这将打开“GameViewController”。在这个 GameViewController 中,当它是正确的单词时,您可以提交一个单词。 弹出一个屏幕,它是“RightWordViewController” 当它错了它会弹出“WrongwordViewController”,无论是对还是错都有一个按钮可以返回游戏。

在 GameViewController 中还有一个菜单按钮,除了你提交了一个词之外,它都可以正常工作。如果您在提交正确或错误的单词时单击 GameViewController 中的菜单按钮,菜单按钮会将我带回到正确或错误的视图控制器。我明白为什么会发生这种情况,我只是不知道如何解决它。我使用了dismissModalViewcontroller,它向我展示了当前视图背后的视图,即正确或错误的视图控制器我需要解决这个问题,希望有人能帮助我。

从菜单转到游戏

-(IBAction)switchview:(id)sender 
 GameViewController *game = [[GameViewController alloc] initWithNibName:nil bundle:nil];
[self presentModalViewController:game animated:YES];

从 GameViewcontroller 到主视图(菜单)的菜单按钮(它会关闭当前屏幕,因此当我提交正确或错误的单词时,这些屏幕会弹出,当我单击此按钮时会显示正确或错误又起来了..我不想要的。)

-(IBAction)switchback:(id)sender [self dismissModalViewControllerAnimated:YES]; 

我用对或错:

if ([labelsText.text isEqualToString: textview.text])

RightWordViewController *Rightword = [[RightWordViewController alloc] initWithNibName:nil bundle:nil];
[self presentModalViewController:RightWord animated:YES];


else
  WrongWordViewController *Wrongword = [[WrongWordViewController alloc]     initWithNibName:nil bundle:nil];
    [self presentModalViewController:WrongWord animated:YES];

然后当我在正确或错误视图控制器中时返回游戏屏幕

-(IBAction)switchback3:(id)sender 
GameViewController *game = [[GameViewController alloc] initWithNibName:nil bundle:nil];
[self presentModalViewController:game animated:YES];

我希望有人能给我一些非常清楚的解释或一些示例代码。

【问题讨论】:

【参考方案1】:

在 switchback3: 方法中,您不需要再次预设视图控制器..只需关闭前面的那个..

[self dismissModalViewControllerAnimated:YES];

另外,在游戏视图控制器中添加一个布尔值来设置一个状态来检查是否显示/不显示正确/错误的视图。

【讨论】:

谢谢,我以前试过这个,但问题是当我这样做时,我返回到 GameViewController 但是所有的单词仍然会提交,并且不会是新的随机词(我在 ViewDidLoad 部分加载) 我不知道你在gameviewcontroller中的布尔值是什么意思【参考方案2】:

使用 -(IBAction)switchback3:(id)sender [selfdismissModalViewControllerAnimated:YES];

在呈现正确/错误的视图控制器之前重置您提交的单词。如果您正在呈现一个视图并且您需要返回,请使用dismissModalViewController。无需再次呈现该视图。

【讨论】:

以上是关于以模态方式呈现 ViewController的主要内容,如果未能解决你的问题,请参考以下文章

以模态方式呈现 UIImagePickerController 时出错

如何以模态方式呈现标准 UIViewController

总是以模态的方式呈现

以模态方式呈现的 TableViewController 可抵抗滚动且难以消除

如何在不使用 presentViewController 的情况下以模态方式呈现自定义视图?

将 MFMailComposeViewController 推送到导航堆栈上?未以模态方式呈现