标签:
一.效果图:
实现功能:在"正在播放"按钮时,切换到下一个界面并继续原歌曲的播放进度
二.实现方法及步骤
1.思路: 第一步.点击按钮事件中再show到下一个界面的时候,推出到我们创建的那个单例视图(前面已将第二个界面视图创建为单例对象)中
第二步.在点击页面播放的时候,如果当前播放为第四首歌曲,show的也是第四首的话,就不需要从头播放,继续当前位置播放即可,如果是下一首的话则需要从头播放(想清楚这个逻辑判断关系)
2.步骤:
第一步实现步骤:
@interface MusicListTableViewController ()
- (IBAction)didClickPlayingBarButton:(UIBarButtonItem *)sender;
@end
//点击按钮推到第二个单例对象视图页面
- (IBAction)didClickPlayingBarButton:(UIBarButtonItem *)sender {
//获取单例对象方法
MusicPlayerViewController *playVC = [MusicPlayerViewController shareMusicPlayVC];
//show到下一个页面
[self.navigationController showViewController:playVC sender:self];
}
第二步实现步骤:
在视图将要出现的方法中,进行判断.历史不放歌曲的线标与当前下标是否相同.如果相同继续当前歌曲播放,如果不同则重新播放.
1.声明一个属性存储播放歌曲的下标
@property(nonatomic,assign)NSInteger currentIndex; //历史存储上一个(旧的)音乐歌曲的下标 用于临时保存播放歌曲
//赋一个初值
_currentIndex = -1;
2.在视图将要出现的页面进行判断
#pragma mark ---视图将要出现时 ,播放音乐
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
//判断按钮点击的那首歌是否与当前相等
if (_index == _currentIndex) {
return;
}
[self prepareForPlaying];
}
注意:在这个判断中存在一个问题,如果播放第一首歌,下标index为0,那么_index = _currentIndex也相等,则就不会走开始播放的那个方法了,从而造成第一首个无法播放.
解决办法:
-(void)prepareForPlaying
{
//_currentIndex用于临时存储index播放歌曲,作为一个临时存储变量
_currentIndex = _index;
NSIndexPath * indexPath = [NSIndexPath indexPathForRow:_currentIndex inSection:0];
标签:
原文地址:http://www.cnblogs.com/erdeng/p/4895925.html