2011-06-10 53 views
-1

好以及现在即时通讯试图让体积改变对滑块错误:'fxVolumeSlider'未声明(首次在此函数中使用) - 需要声明IBOUTLET?

这里是代码

@implementation MainerViewController 
@synthesize fxVolumeSlider; 

- (IBAction)pushPlay:(id)sender; { 
    NSString *path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"wav"]; 
    if (theAudio) [theAudio release]; 
    theAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL]; 
    theAudio.delegate = self; 
    [theAudio play];  
    volumeTimer = [NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(updateVolume) userInfo:nil repeats:YES]; 

} 

-(void)updateVolume { 
    [theAudio setVolume:fxVolumeSlider.value]; 
} 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    // Setup custom slider images 
    UIImage *minImage = [UIImage imageNamed:@"grey_track.png"]; 
    UIImage *maxImage = [UIImage imageNamed:@"white_track.png"]; 
    UIImage *tumbImage= [UIImage imageNamed:@"metal_screw.png"]; 

    minImage=[minImage stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0]; 
    maxImage=[maxImage stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0]; 

    // Setup the FX slider 
    [fxVolumeSlider setMinimumTrackImage:minImage forState:UIControlStateNormal]; 
    [fxVolumeSlider setMaximumTrackImage:maxImage forState:UIControlStateNormal]; 
    [fxVolumeSlider setThumbImage:tumbImage forState:UIControlStateNormal]; 

    fxVolumeSlider.minimumValue = 0.0; 
    fxVolumeSlider.maximumValue = 1.0; 
    fxVolumeSlider.continuous = YES; 
    //fxVolumeSlider.value = [sharedSoundManager fxVolume]; 

    // Attach an action to sliding 
    [fxVolumeSlider addTarget:self action:@selector(fxSliderAction:) forControlEvents:UIControlEventValueChanged]; 

    // Cleanup 
    minImage = nil; 
    maxImage = nil; 
    tumbImage = nil; 
} 
- (void) fxSliderAction:(id)sender { 
    [theAudio setFxVolume:fxVolumeSlider.value]; 
} 

但是现在我得到这个错误

警告:“AVAudioPlayer”可能不响应“-setFxVolume:”

所以每次我打的播放按钮,我试着调整音量,但我得到踢出应用

回答

1

您已经声明为伊娃和财产_fxVolumeSlider但你用什么方法内是fxVolumedSlider。两者都不一样。您应该使用_fxVolumeSlider或者你大概意思是对财产申报作为

@property(retain, nonatomic) IBOutlet UISlider *fxVolumeSlider; 

,并使用

@synthesize fxVolumeSlider = _fxVolumeSlider; 

合成它但即使如此,你不能把它作为fxVolumeSlider。您可以使用它作为self.fxVolumeSlider_fxVolumeSlider。如果你想使用它作为普通的fxVolumeSlider,你应该用fxVolumeSlider代替所有的_fxVolumeSlider

+0

嗨,你可以请看看新错误 – LAA 2011-06-10 22:08:46

+0

我认为你正在寻找的方法是'setVolume:'而不是'setFxVolume:'。 – 2011-06-10 22:19:49

+0

谢谢你现在的作品! :) – LAA 2011-06-10 22:27:52

1

检查声明中的下划线。在.h文件中,您有:

IBOutlet UISlider *_fxVolumeSlider; 

你应该有:

IBOutlet UISlider *fxVolumeSlider; 

此外,在.m文件,编辑该行

@synthesize _fxVolumeSlider; 

@synthesize fxVolumeSlider; 

至于修改后的问题:

- (void) fxSliderAction:(id)sender { 
    [theAudio setFxVolume:fxVolumeSlider.value]; 
} 

应改为读作

- (void) fxSliderAction:(id)sender { 
    [theAudio setVolume:fxVolumeSlider.value]; 
} 

当心拼写错误(和发布前去找他们!)

+0

好感谢现在的作品,但uislider心不是改变,香港专业教育学院联系起来在Interface Builder – LAA 2011-06-10 21:46:22

+0

现在你已经改变了声明的名称重置链接(这是IB承认什么)。 – PengOne 2011-06-10 21:47:15

+0

噢耶谢谢现在作品 – LAA 2011-06-10 21:55:20

相关问题