2013-03-08 63 views
0

我在ViewController中有一个音频播放器。我把这种ViewController当在另一viewcontroller一个tableviewDidSelectRow称为AlbumViewController。问题我面对的是选择歌曲时,我选择一首歌曲,其推送到audioplayer视图控制器并开始播放,但是当我按下返回并选择来自专辑的另一首歌曲,前一首歌曲没有停止,它仍然在播放,而新歌曲被选中。现在,新选择的歌曲推到音频播放器的另一个实例viewcontroller并播放。而之前选择的歌曲也随之播放。并且,对于每首歌曲的选择,推动一个新的音频播放器viewcontroller的实例,并且所有选择的歌曲一起播放。它具有tableview用它做选择行代码我的专辑控制器如下每次生成ViewController的新实例

viewContObj=[[ViewController alloc]initWithNibName:@"ViewController" bundle:nil]; //viewcontroller=audio player controller 
    [self.navigationController pushViewController:viewContObj animated:YES]; 
    viewContObj.url =[NSURL URLWithString:albumURLstring]; 
    [viewContObj playLiveStream:nil]; 

和音频播放器播放方法如下。推

viewContObj=[[ViewController alloc]initWithNibName:@"ViewController" bundle:nil]; 
[self.navigationController pushViewController:viewContObj animated:YES]; 
viewContObj.url =[NSURL URLWithString:albumURLstring]; 
[viewContObj playLiveStream:nil]; 
[viewContObj release]; 

而且在ViewController.m后

-(IBAction)playLiveStream:(id)sender 

{ if (![streamer isPlaying]) 

{ [self createStreamer]; 
    [self setButtonImageNamed:@"loadingbutton.png"]; 
    [streamer start]; 
} 
else 
{ [self setButtonImageNamed:@"play.png"]; 
    [streamer pause]; 
}} 
+0

上didselect只要停止音频播放器网址传递之前和viewWillAppear中播放音频播放的看法。我希望它能工作..:) – 2013-03-08 11:20:36

+0

你的意思是在音频播放器控制器类的ViewWillAppear方法中调用playlivestream方法?像这样 - (void)viewWillAppear:(BOOL)animated { [self playLiveStream:nil]; } – user2114872 2013-03-08 11:24:19

+0

是的。并停止玩家在didselect。 B.T.W.哪个播放器用于播放音频? – 2013-03-08 11:25:58

回答

0

放在.m文件的@interface第一部分伊娃这样

@property (strong, nonatomic) ViewController *playerView; 

而且在viewDidLoad方法的alloc初始化它如下

playerView=[[ViewController alloc]initWithNibName:@"ViewController" bundle:nil]; 

而且在方法如下

playerView.url =[NSURL URLWithString:albumURLstring]; 
[playerView playLiveStream:nil]; 
[self.navigationController pushViewController:playerView animated:YES]; 

愿这解决您的问题:)

0

添加发布:

- (void)dealloc{ 
    [streamer stop]; 
    [streamer release]; 
    [super dealloc]; 
} 

好吗?

+0

这是一个弧形程序。所以我不使用dealloc! – user2114872 2013-03-08 11:18:33

1

使用视图控制器singletone实例,并且尝试这样

在视图控制器

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
     { 
      self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
      if (self) { 
       // Custom initialization 
      } 
      return self; 
     } 

//1. Customize singletone 

     -(id)initWithCustomDetails:(NSString *)customDetails 
     { 
      self = [super init]; 
      if(_sharedMySingleton) 
      { 
       [_sharedMySingleton.view removeFromSuperview]; 
       _sharedMySingleton = nil; 
      } 
      _sharedMySingleton = self; 

      return self; 
     } 

2. exact singletone method for creating instance 

+(ViewController *) getViewControllerInstance 
{ 
    @synchronized([ViewController class]) 
    { 
     if (!_sharedMySingleton) 
     { 
      _sharedMySingleton = [[self alloc] init]; 

     } 
     return _sharedMySingleton; 
    } 
    return nil; 
} 

创建singletone例如在创建实例使用

  1. viewContObj = [[视图控制器页头] initWithCustomDetails:@”细节”];

代替这种方法

viewContObj=[[ViewController alloc]initWithNibName:@"ViewController" bundle:nil]; 

//完全singletone实例创建

  1. viewContObj = [视图控制器getViewControllerInstance];

,并尝试..

相关问题