gpt4 book ai didi

ios - 将值从 UIView 传递到 UIVIewController

转载 作者:行者123 更新时间:2023-11-29 02:48:08 25 4
gpt4 key购买 nike

在我正在构建的 iOS 应用程序中,我在特定的时间间隔发出声音。一个自动收报机声音和另一个声音,这是在名为 ResultView 的 UIView 中完成的。现在这个 View 由 ResultViewController 显示。

问题: 当按下导航按钮的后退按钮时,我希望声音消失。

这个后退按钮可以返回到名为 LOBBY 的 viewController这是一个问题,因为没有可用的 viewWillDissapear 函数。整个代码很大,所以我只放了小片段。提前致谢

结果 View Controller :

    UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"back.png"]
style:UIBarButtonItemStylePlain target:self
action:@selector(gotoLobby)];

//大厅选择器

- (void)gotoLobby{
//Pop Back to Lobby
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:1] animated:YES];
}

现在是播放声音的 View (PlayerResultView):

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.75 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
if([[NSUserDefaults standardUserDefaults]boolForKey:@"soundKey"])
{
NSString *path = [[NSBundle mainBundle]
pathForResource:@"ticker bell" ofType:@"caf"];
NSURL *pathURL = [NSURL fileURLWithPath:path];
AudioServicesCreateSystemSoundID((__bridge CFURLRef)pathURL,&tickerbell);
AudioServicesPlaySystemSound(tickerbell);
}
}

再次:我需要一种方法来控制这些声音在按下后退按钮时关闭。(当它进入大厅时)

此外,由于栏已编码,因此它不会显示在 mainStoryBoard 上,因此请不要告诉我使用 IBAction 方法。谢谢您

最佳答案

正确的解决方案是将您的声音代码移动到 View Controller 中。这将更符合模型- View - Controller 模式。

无论如何,您需要在PlayerResultView 中添加一个停止播放声音的方法:

- (void)stopCurrentSound {
OSStatus AudioServicesDisposeSystemSoundID (tickerBell);
}

然后,在gotoLobby中,你可以调用它:

- (void)gotoLobby{

[self.playerResultView stopCurrentSound];

//Pop Back to Lobby
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:1] animated:YES];
}

我假设您在 View Controller 中有一个对 PlayerResultView View 的引用,否则您需要添加一个以便向该 View 发送消息。

关于ios - 将值从 UIView 传递到 UIVIewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24852503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com