我正在使用情节提要创建一个应用程序,其中第一个屏幕在表格视图中有歌曲列表,我想将该歌曲传递到下一个视图(我们称之为音乐播放器)。我可以做到这一点,但我还需要音乐播放器在音乐播放器播放音乐时跟踪各种锻炼统计数据。
问题是,如果我进入音乐播放器,返回歌曲列表视图,然后再次选择一个单元格,它会创建一个全新的音乐播放器实例。这是有问题的,因为它创建了一个新的计时器并且我丢失了所有的锻炼统计数据。我还发现原来的音乐播放器实例仍然存在,因为计时器继续触发。
我能做些什么来确保只有一个音乐播放器实例继续出现吗?
这是我当前的代码(按执行顺序):
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
self.nextScreen = [segue destinationViewController];
}
^ 这会将下一个屏幕存储为成员变量。我必须这样做,因为prepareForSeque:
之前调用过didSelectRowAtIndexPath:
,我需要在下一个视图上设置数据。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
self.nextScreen.currentSong = [self.allSongs objectAtIndex:indexPath.row];
}
^这只是设置歌曲。
然后我继续根据需要设置下一个视图viewDidLoad:
。
有什么技巧可以解决这个问题吗?如果没有,有什么建议可以解决这个问题吗?我在想一种解决方法是我必须设置某种单例,我只是不确定这是否是最好的选择,因为我需要经常重置数据。
谢谢!