У меня есть viewController
по имени AudioViewController
. В том, что я имею этот метод:Доступ к UINavigationController от classmethod
- (IBAction)stopAction:(id)sender
{
[self.audioClass stop];
}
Я в NSObject
класс под названием AudioClass
. В том, что я имею эти методы:
-(void) stop
{
if (!recorder.recording)
{
[player stop];
player.currentTime = 0;
[self.recordOrPauseButton setEnabled:YES];
[self.stopButton setEnabled:NO];
[self alertMessage];
}
else
{
[recorder stop];
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setActive:NO error:nil];
[self alertMessage];
}
}
-(void) alertMessage
{
UIAlertView *stopAlert = [[UIAlertView alloc] initWithTitle: @"Done!"
message: @"Do you want to save it?"
delegate: self
cancelButtonTitle:@"Cancle"
otherButtonTitles:@"Save", nil];
[stopAlert show];
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger) buttonIndex
{
if (buttonIndex == 0)
{
// this is the cancel button
}
else
{
[self.sqLiteDB insertDataIntoTable:soundFilePath And:outputFileURL];
[self.navigationController popViewControllerAnimated:YES];
}
}
Теперь здесь в
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger) buttonIndex
он не распознает
[self.navigationController popViewControllerAnimated:YES];
.
Потому что, это в классе NSObject
. Как я могу получить доступ к этому navigationController
и вернуться с AudioViewControlelr
к предыдущему ViewController
?
Если у кого-нибудь есть решение, поделитесь им со мной. Заранее большое спасибо. Хорошего дня.
Вы не можете просто переместить логику AlertView внутри viewController? –
@GonjiDev Спасибо, что комментировали. Я не могу этого сделать. Потому что '- (void) audioPlayerDidFinishPlaying: (AVAudioPlayer *) игрок успешно: (BOOL) flag' этот метод также использует тот же метод' [self alertMessage]; '. Что находится в 'AudioClass'. – Tulon
После ответа @CleverError вы должны уведомить viewController, когда успешно активирован '- (void) audioPlayerDidFinishPlaying: (AVAudioPlayer *): (BOOL) flag'. Вы можете достичь этого разными способами, можно использовать NSNotificationCenter. Отображение оповещения - это ответственность viewControllers. –