我有ViewController
的音频播放器。我在ViewController
的{{1}}中选择了另一个名为DidSelectRow
的{{1}}中的tableview
来调用此viewcontroller
。我遇到的问题是我选择的时候一首歌,它推向音频层视图控制器并开始播放,但是当我按下并从专辑中选择另一首歌曲时,前一首歌曲不会停止,它仍会在选择新歌曲时播放。现在新选择的歌曲推送到音频播放器AlbumViewController
的另一个实例并播放。而之前选择的歌曲也随之播放。并且对于每个歌曲的选择,推送音频播放器viewcontroller
的新实例,并且一起播放所有选择的歌曲。我的相册控制器有viewcontroller
,它的选择行代码如下所示
tableview
和音频播放器播放方法如下。
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];
答案 0 :(得分:1)
对ViewController使用单一实例并尝试这样
在ViewController中创建单一实例
- (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;
}
创建实例时使用
而不是这个方法
viewContObj=[[ViewController alloc]initWithNibName:@"ViewController" bundle:nil];
//精确单线实例创建
并尝试..
答案 1 :(得分:0)
按
后添加发布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中:
- (void)dealloc{
[streamer stop];
[streamer release];
[super dealloc];
}
好吗?
答案 2 :(得分:0)
将一个ivar放入.m文件的@interface
部分,如下所示
@property (strong, nonatomic) ViewController *playerView;
在viewDidLoad
方法中,使用alloc init,如下所示
playerView=[[ViewController alloc]initWithNibName:@"ViewController" bundle:nil];
并在tableView: didSelectRowAtIndexPath:
方法中执行以下操作
playerView.url =[NSURL URLWithString:albumURLstring];
[playerView playLiveStream:nil];
[self.navigationController pushViewController:playerView animated:YES];
这可以解决你的问题:)