ошибка: 'fxVolumeSlider' не объявлен (первое использование в этой функции) - нужно объявить IBOUTLET? - PullRequest
0 голосов
/ 11 июня 2011

Хорошо, теперь я пытаюсь изменить громкость на ползунке

, вот код

@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:'

Так что каждый раз, когда я нажимаю кнопку воспроизведения, я пытаюсь отрегулировать громкость, но меня выталкивают из приложения

Ответы [ 2 ]

1 голос
/ 11 июня 2011

Вы объявили и ivar и свойство как _fxVolumeSlider, но в методе вы используете fxVolumedSlider. Оба не одинаковы. Вы должны использовать _fxVolumeSlider или то, что вы, вероятно, имели в виду, было объявить свойство как

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

и синтезируйте его, используя

@synthesize fxVolumeSlider = _fxVolumeSlider;

Но даже тогда вы не можете использовать его как fxVolumeSlider. Вы можете использовать его как self.fxVolumeSlider или _fxVolumeSlider. Если вы хотите использовать его как простой fxVolumeSlider, вам следует заменить все _fxVolumeSlider s на fxVolumeSlider.

1 голос
/ 11 июня 2011

Проверьте подчеркивание в декларации.В файле .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];
}

Следите за опечатками (и ищите их раньшеразмещение!)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...