Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在弹出目标时保留ViewController-C_Ios_Objective C_Uiviewcontroller_Uinavigationcontroller - Fatal编程技术网

Ios 如何在弹出目标时保留ViewController-C

Ios 如何在弹出目标时保留ViewController-C,ios,objective-c,uiviewcontroller,uinavigationcontroller,Ios,Objective C,Uiviewcontroller,Uinavigationcontroller,当视图控件从堆栈中弹出时,如何保留它 基本上我有一个Mp3播放器视图控制器。当我在视图控制器中时,我可以播放音乐。当播放音乐时,我导航到另一个控制器,音乐停止播放,当我导航回该控制器时,它会启动另一个控制器实例。因此,我的猜测是,可能会保留视图控制器 这是我启动音乐播放器视图控制器的方式: NSString *songLargeArtworkURL = [self.songArtworkURL stringByReplacingOccurrencesOfString:@"large" withS

当视图控件从堆栈中弹出时,如何保留它

基本上我有一个Mp3播放器视图控制器。当我在视图控制器中时,我可以播放音乐。当播放音乐时,我导航到另一个控制器,音乐停止播放,当我导航回该控制器时,它会启动另一个控制器实例。因此,我的猜测是,可能会保留视图控制器

这是我启动音乐播放器视图控制器的方式:

NSString *songLargeArtworkURL = [self.songArtworkURL stringByReplacingOccurrencesOfString:@"large" withString:@"crop"];
MusicPlayerViewController *musicPlayer = [[MusicPlayerViewController alloc] init];
musicPlayer.songName = self.testString;
musicPlayer.songArtWork = songLargeArtworkURL;
musicPlayer.songStream = self.songStreamURL;
[self.navigationController pushViewController:musicPlayer animated:YES];

请使用实例变量,而不是对
MusicLayerViewController
使用局部变量。仅第一次分配
musicPlayer
实例。如下所示:

NSString *songLargeArtworkURL = [self.songArtworkURL stringByReplacingOccurrencesOfString:@"large" withString:@"crop"];
if(! musicPlayer) {
    musicPlayer = [[MusicPlayerViewController alloc] init];
}
musicPlayer.songName = self.testString;
musicPlayer.songArtWork = songLargeArtworkURL;
musicPlayer.songStream = self.songStreamURL;
[self.navigationController pushViewController:musicPlayer animated:YES];

上面的代码确保仅在第一次实例化音乐播放器。随后,它会推送音乐播放器的同一个实例

我已经尝试过了,但我得到了一个错误:应用程序试图推送targetAre上的nil view控制器。您确定,您首先要分配它吗?是否有:if(!musicPlayer){musicPlayer=[[MusicPlayerViewController alloc]init];}“应用程序试图将nil视图控制器推送到目标上“推一个零对象时会出现错误。因此,如果您是第一次分配实例,则不应出现此错误。我猜您还没有第一次实例化这个实例。我想我发现了问题所在。mp3播放器出现在2视图之后,我刚意识到,当我弹出时,它会返回到第一个视图,从而生成第二个视图的新实例,从而使其为零。如果你明白我的意思,非常感谢!虽然我想到了这一点,但我不知道这是正确的做法:)