2011-06-10 98 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