10

iPhone でローカル オーディオ ファイルを再生するためのアプリを作成したいのですが、いくつかのコードで行き詰まっています。ビューをプッシュして、uitableviewcontroller に戻り、ボタン (メディア プレーヤーの「NOW PLAYING」ボタンなど) を使用して、新しい文字列をプッシュせずにビューに戻る方法を知りたい..

ありがとうございました

コードから何を変更すればよいですか?

uitableviewcontrollerで..

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath
    *)indexPath  {  
selectedSong = [directoryContent objectAtIndex:indexPath.row];  
NSString *storyLin = [[directoryContent objectAtIndex:[indexPath row]] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];  
patch = [NSString stringWithFormat:@"/%@", storyLin];


        myDetViewCont = [[mPlayerViewController alloc] initWithNibName:@"mPlayerViewController" bundle:nil];    
myDetViewCont.myProgLang = selectedSong; // assigning the correct value to the variable inside DetailViewController
        [self.navigationController pushViewController:myDetViewCont animated:YES];
        [myDetViewCont release]; // releasing controller from the memory

    }

mPlayerViewController.m で

-(IBAction) backtoplayer{
    myDetViewCont = [[mPlayerViewController alloc] initWithNibName:@"mPlayerViewController" bundle:nil];
}
4

2 に答える 2

12

ビューをナビゲーション コントローラーにプッシュした場合は、それをポップして下のビューを確認します。

つまり、プッシュするビューは、呼び出しmyDetViewContでポップする必要があります。backtoplayer

- (IBAction)backToPlayer:(id)sender {
    [self.navigationController popViewControllerAnimated:YES];
}
于 2011-03-16T21:49:37.237 に答える
4

マークが言ったことに追加します。

popViewControllerAnimatedを実行し、ユーザーが同じコントローラーをもう一度プッシュしたい場合は、mPlayerViewControllerを解放するのではなく、そのままにしておく必要があります。

そのような:

    if (!myDetViewCont)
    { // We only need to create it once.
           myDetViewCont = [[mPlayerViewController alloc] initWithNibName:@"mPlayerViewController" bundle:nil];    
    }
    myDetViewCont.myProgLang = selectedSong;
    [self.navigationController pushViewController:myDetViewCont animated:YES];
    // no longer release here, move the release call to the dealloc
于 2011-03-16T21:56:24.177 に答える