0

にオーディオ プレーヤーがありViewControllerます。私がViewController直面している問題は、私が曲を選択するとき、それがaudioplayerビューコントローラーにプッシュされて再生を開始するときですが、押し戻してアルバムから別の曲を選択するときDidSelectRowです前の曲は停止されず、新しい曲が選択されている間も再生されます。新しく選択された曲はオーディオ プレーヤーの別のインスタンスにプッシュされ、再生されます。前に選択した曲も一緒に再生されます。また、曲を選択するたびに、オーディオ プレーヤーの新しいインスタンスがプッシュされ、選択されたすべての曲が一緒に再生されます。行コードを選択した私のアルバムコントローラーは以下のとおりですtableviewviewcontrollerAlbumViewControllerviewcontrollerviewcontrollertableview

 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];

オーディオプレーヤーの再生方法は以下の通りです。

   -(IBAction)playLiveStream:(id)sender

{ if ( ![streamer isPlaying] )

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

3 に答える 3

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;
}

インスタンス使用の作成中

  1. viewContObj=[[ViewController alloc]initWithCustomDetails:@"詳細"];

この方法の代わりに

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

//正確なシングルトーン インスタンスの作成

  1. viewContObj = [ViewController getViewControllerInstance];

そして試してみてください..

于 2013-03-08T11:55:13.927 に答える
0

@interfaceこのように.mファイルの部分にivarを1つ入れます

@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];

これで問題が解決します:)

于 2013-03-12T10:11:16.660 に答える
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]; 
}

Ok?

于 2013-03-08T11:14:28.557 に答える