从classmethod访问UINavigationController

时间:2014-11-04 15:59:44

标签: ios objective-c uinavigationcontroller nsobject class-method

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

如果有任何解决方案,请与我分享。非常感谢提前。祝你有个美好的一天。

1 个答案:

答案 0 :(得分:1)

iOS开发基于Model View Contorller design pattern。您的AudioViewControlelr显然是一个控制器,而您的AudioClass实际上是一个模型。在MVC中,模型不应该直接修改视图,这包括修改UINavigationControllers和显示UIAlertViews

在您的情况下,您的AudioViewController应在AudioClass对象上停止并显示UIAlertView


在旁注中,AudioRecorderAudioClass更好。它更准确地描述了课程的作用,而不是仅仅告诉我们这是一门我们已经知道的课程。