当我在故事板中切换到另一个ViewController时,字符串selectedSong
没有保留其值。即使我的所有viewcontroller都连接到ViewController类。
我这样做了
第一视图:
- (IBAction)selectTheSong {
selectedSong = @"test";
NSLog(@"%@", selectedSong);
}
并在日志中返回值test
。
第二视图:
NSLog(@"%@", selectedSong);
if (audioPlayer == nil) {
NSString* soundPath =[[NSBundle mainBundle] pathForResource:selectedSong ofType:@"mp3"];
NSURL *soundURL = [NSURL fileURLWithPath:soundPath];
NSError *error = nil;
self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundURL error:&error];
[self.audioPlayer prepareToPlay];
}
[self.audioPlayer play];
这次它会在日志中返回(null)
。
字符串设置不正确吗?我试过把它作为财产等但是没有用。 请帮忙!谢谢!
答案 0 :(得分:3)
您需要在类界面中将字符串设置为具有strong
保留类型的属性。
例如
@property (nonatomic, strong) NSString *myString;
此外,始终使用self
关键字访问该字符串实例,以确保调用合成的访问器方法。
即
self.myString = @"Hello!";
希望有所帮助!
答案 1 :(得分:0)
使用房产是可行的方法。你是如何将字符串的值从一个ViewController传递给另一个的?您应该使用prepareForSegue:
方法。