我对模态转换的工作方式缺乏认真的理解,所以请不要留下最简单的答案。
我有两个视图,他们在storyboard中设置了自己的视图控制器。主菜单上的按钮指向其他视图。我完全通过按住Ctrl键单击并选择模态转换来设置此转换。我也有一个从另一个视图回到主菜单的按钮,设置类似。
为了进一步了解这些过渡,我决定我希望主菜单在加载时发出声音,但只是第一次点击运行,而不是当我按下按钮时另一个视图回到菜单视图。
在我的菜单视图中,我有一个私有属性BOOL
@interface MainMenuViewController ()
@property BOOL menuSoundPlayed;
@end
和我的viewDidLoad ......
- (void)viewDidLoad
{
[super viewDidLoad];
if (!self.menuSoundPlayed){
//sound setup code omitted for clarity
AudioServicesPlaySystemSound(mySound);
self.menuSoundPlayed = YES;
}
}
有人可以帮我理解为什么主菜单视图加载时菜单声音会播放吗?我确实承认menuSoundPlayed从未真正初始化,但我不知道我甚至会做到这一点。
旁注:我喜欢苹果给我们带来了所有这些便利,比如故事板,但我几乎希望能够更容易地看到这些事情背后的所有代码,所以我真的可以理解当我在做什么时发生了什么'在观点之间。
无论如何,谢谢!
答案 0 :(得分:1)
我做了一些研究并回答了我自己的问题。
在我之前遇到的情况中(在我的问题中描述)我有代码
[self performSegueWithIdentifier:@"mainMenuSegue" sender:sender];
正在执行,正如评论者描述的那样,启动了我的主菜单的新实例。
我想要的是返回已经创建的主菜单实例。
要做到这一点,需要以下代码(显然有你自己的完成块):
[self dismissViewControllerAnimated:YES
completion:^{
NSLog("view dismissed");
}];