BAD_ACCESS

おもにiOS、ときどき変な電子工作、ガジェット話。

#7 複数の音源から再生したい音源を選ぶ(その2)ーC4でAudio Playerをつくる(5)

この記事は「一人アドベントカレンダー2013〜Lonely Advent Calender 2013〜」の8日目の記事です。

前回、音源リストのビューを追加しただけで終わってしまっていたので、引き続き実装をすすめます。

Xibファイル上のViewの取り扱いについて

通常のUIViewとして待ち受けていてもうまくビューが表示されません。 下図のようにXib上でViewを選択し、カスタムクラスのC4Viewを選択します。

音源リストの実装

SongListWorkSpace.h

SongListWorkSpace.m

C4WorkSpace側からの呼び出し

まずC4WorkSpace上でSongListWorkSpaceを初期化します。

-(void)createSongList
{
    songList = [[SongListWorkSpace alloc] initWithNibName:@"SongListWorkSpace" bundle:[NSBundle mainBundle]];
    songList.delegate = self;
    songList.canvas.frame = self.canvas.frame;
    [songList setup];
    currentSongTag = songList.currentSongTag;
}

SongListWorkSpaceをもとのC4WorkSpaceから呼び出します。

-(void) onPlaylistButton
{
    [sample pause];
    UIViewAnimationOptions options = UIViewAnimationOptionTransitionFlipFromLeft;
    [self switchToView:(C4View*)songList.canvas transitionOptions:options];
}

-(void)switchToView:(C4View *)view transitionOptions:(UIViewAnimationOptions)options {
    if(![currentView isEqual:view]) {
        [UIView transitionFromView:currentView toView:view duration:0.75f options:options completion:^(BOOL finished) {
            currentView = view;
            finished = YES;
        }];
    }
    currentView.userInteractionEnabled = YES;
}

これでC4WorkSpaceから音源リストを表示できるようになりました。 あとは音源を選択すると自動的にC4WorkSpaceの画面に戻るdelegateメソッドを実装すればOKです。