码迷,mamicode.com
首页 > 其他好文 > 详细

新浪微博项目技术之一正在播放按钮点击

时间:2015-10-20 21:14:09      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:

一.效果图:

  实现功能:在"正在播放"按钮时,切换到下一个界面并继续原歌曲的播放进度

 

技术分享

 

二.实现方法及步骤

   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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!