我viewController
名为AudioViewController
。在那,我有这个方法:
- (IBAction)stopAction:(id)sender
{
[self.audioClass stop];
}
我有一个名为NSObject
的{{1}}课程。在那,我有这些方法:
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
?
如果有任何解决方案,请与我分享。非常感谢提前。祝你有个美好的一天。
答案 0 :(得分:1)
iOS开发基于Model View Contorller design pattern。您的AudioViewControlelr
显然是一个控制器,而您的AudioClass
实际上是一个模型。在MVC中,模型不应该直接修改视图,这包括修改UINavigationControllers
和显示UIAlertViews
。
在您的情况下,您的AudioViewController
应在AudioClass
对象上停止并显示UIAlertView
。
在旁注中,AudioRecorder
比AudioClass
更好。它更准确地描述了课程的作用,而不是仅仅告诉我们这是一门我们已经知道的课程。