我想构建一个用于在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];
}
答案 0 :(得分:11)
如果您已将视图推入导航控制器,只需将其弹出即可查看下方的视图。
也就是说,您推送myDetViewCont
的视图应该只是在backtoplayer
来电中弹出。
- (IBAction)backToPlayer:(id)sender {
[self.navigationController popViewControllerAnimated:YES];
}
答案 1 :(得分: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