0

更新了下面的第一个建议,仍然遇到问题:我从开发人员那里继承了一些 iPhone 应用程序,现在我是一个技能很少的开发人员。我正在尝试将这些 iPhone 应用程序之一转换为通用应用程序(iPhone 和 iPad),我快到了,只有一个问题:我有一个视图可以在 iPhone 上正确消失,但在 iPad 上却没有。希望这里有人可以帮助我,我一直在为这个问题(希望有一个相当简单的解决方案)苦苦挣扎 3 天以上,我想我已经把所有的头发都拉出来了。:)

我被告知其中一些是旧代码,这可能是真的,但因为这个问题阻止我提交到应用商店,所以我现在宁愿避免大的重构/重新设计解决方案。所以这就是发生的事情(提前为这篇文章的时髦格式道歉,不知道为什么代码不是全部采用编码格式,时髦的项目符号编号等):

  1. 应用程序从我的主视图控制器(MyAppViewController)开始,它有一个“播放”按钮,可以开始游戏。当点击“播放”按钮时,以下代码会实例化游戏视图控制器:

    mainGameViewControllerIpad = [[MainGameViewControllerIpad alloc] initWithNibName:nil bundle:nil]; [self.view addSubview:mainGameViewControllerIpad.view];

这将打开 MainGameViewControllerIpad 视图,用户开始玩游戏。

  1. 游戏回合结束后,MainGameViewControllerIpad 中的代码会执行以下操作:

    GameStatsViewControllerIpad *gameStatsViewControllerIpad = [[GameStatsViewControllerIpad alloc] init]; [gameStatsViewControllerIpad setModalTransitionStyle:UIModalTransitionStyleCrossDissolve]; [自我presentModalViewController:gameStatsViewControllerIpad动画:YES];

    [self.view addSubview:gameStatsViewControllerIpad.view];

    [gameStatsViewControllerIpad setStatsDisplay];

这将打开 Game Stats 视图,该视图告诉用户他们在刚刚玩过的回合中的表现。所以你有介绍屏幕视图,然后是游戏视图控制器作为它的子视图,而统计屏幕作为游戏视图的子视图。这适用于 iPhone 和 iPad。

所以这就是事情变得奇怪的地方:

  1. 当用户查看完他们的统计信息后,他们点击统计信息页面上的“完成”按钮,然后运行以下代码:

[自我dismissViewControllerAnimated:是完成:无];[self.view 发布];

所以这里是问题:在 iPhone 上,这会关闭 Stats 视图,我假设因为 stats 视图是 MainGameViewController 的子视图,该视图也会消失,并且用户返回到 MyAppViewController。这是对的。

然而,在 iPad 上,当上面的代码运行时,它会立即关闭 Stats 视图,但是一旦它消失,它就会显示 MainGameViewController 视图仍然可见——换句话说,在 iPhone 上,上面的代码会关闭子视图并它是容器视图,但在 iPad 上,它不会关闭父/超级视图。

有人对如何让 MainGameViewController 也能在 iPad 上工作有任何相当简单的建议吗?提前感谢您的任何见解/建议!

4

1 回答 1

0

只需关闭模态视图而不是将其删除。

[self dismissViewControllerAnimated:YES completion:nil];
于 2013-07-03T23:14:44.800 回答