【发布时间】:2015-11-25 06:16:45
【问题描述】:
我在我的项目中为侧边菜单项实现了 SWRevealViewController。基本上我的应用程序是一种音乐应用程序。如果用户在其他屏幕或背景中,主屏幕中的歌曲将继续播放。我正在关注本教程 AppCoda (http://www.appcoda.com/ios-programming-sidebar-navigation-menu/)
- 当启动主屏幕的应用程序启动时,也会开始播放歌曲。
- 如果用户从侧面菜单项转到另一个屏幕,例如播放列表。主屏幕在 Stack 中,歌曲播放完美。 播放列表屏幕位于前面。
- 我再次从侧面菜单项进入主屏幕。新实例正在创建,而不是转到已创建的主屏幕。现在,我 可以同时听两首歌。一个来自第一个主屏幕和 另一个来自新主屏幕。
这发生在所有屏幕上。我该如何解决这个问题?我只想要堆栈中的一个屏幕,而不是多次创建同一个屏幕。
这是我的侧边菜单表视图控制器的代码,
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.section == 1) {
UINavigationController *navController;
if (indexPath.row == 0) {
ViewController *homeVC = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewController"];
navController = [[UINavigationController alloc] initWithRootViewController:homeVC];
[navController setViewControllers: @[homeVC] animated: YES];
} else if (indexPath.row == 1) {
SongsListViewController *songsListVC = [self.storyboard instantiateViewControllerWithIdentifier:@"SongsListViewController"];
navController = [[UINavigationController alloc] initWithRootViewController:songsListVC];
[navController setViewControllers: @[songsListVC] animated: YES];
} else if (indexPath.row == 2) {
PlayListViewController *songsListVC = [self.storyboard instantiateViewControllerWithIdentifier:@"PlayListViewController"];
navController = [[UINavigationController alloc] initWithRootViewController:songsListVC];
[navController setViewControllers: @[songsListVC] animated: YES];
}
[self.revealViewController setFrontViewController:navController];
[self.revealViewController setFrontViewPosition: FrontViewPositionLeft animated: YES];
}
}
期待您的帮助。提前致谢。
【问题讨论】:
-
谢谢。我只遵循本教程。实际上,每当我们从 Side Menu TableView 导航到其他屏幕时,都会创建新实例而不是使用前一个。因此,相同的视图控制器在 Stack 中添加了很多次。任何的想法?我无法解决出错的问题。
-
Yuvaraj 请参阅 Meharoof Najeeb 的回答。
-
对播放器使用单例类,以便始终只有一个播放器。
标签: ios objective-c xcode7 swrevealviewcontroller