我有一個UINavigationGroup
與根視圖控制器MainViewController
。這裏面MainViewController
我打電話另一個UINavigationController
爲模式如下:從模態或推送視圖調用父方法presentationViewController
- (IBAction)didTapButton:(id)sender {
UINavigationController * someViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"someNavigationController"];
[self.navigationController presentViewController:someViewController animated:YES completion:nil];
}
這裏面someNavigationController
,用戶正在經歷某些過程使導航控制器正在與一些UIViewControllers
推。用戶完成過程後,在最後UIViewController
稱爲finalStepViewController
,我關閉模式如下:
[self dismissViewControllerAnimated:YES completion:nil];
模態確實駁回,用戶回到初始MainViewController
。 但是,我想推另一個UIViewController
到MainViewController
的NavigationController(例如:一個視圖,說用戶已成功完成該過程)。最好在模態被解除之前。
我曾嘗試以下的事情:
1.使用presentingViewController
UIViewController * successViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"successViewController"];
[self.presentingViewController.navigationController successViewController animated:YES];
結果:沒有錯誤,但沒有發生任何。
2.代表/協議
- 進口
finalStepViewController.h
內部MainViewController.h
和所附<finalStepViewControllerDelegate>
- 內部
MainViewController.m
添加了一個名爲parentMethodThatChildCanCall
被調用方法從finalStepViewController.m
添加以下到
finalStepViewController.h
:@protocol finalStepViewControllerDelegate <NSObject> -(void)parentMethodThatChildCanCall; @end
@property (assign) id <finalStepViewControllerDelegate> delegate;
和@synthesize delegate;
模型- 在上面的委託屬性設置爲
someViewController
提到didTapButton
IBAction爲自我。這表明通知錯誤說: - 最後在關閉模式之前調用
[self.delegate parentMethodThatChildCanCall]
。
結果:除通知錯誤外,沒有失敗但沒有任何反應,因爲parentMethodThatChildCanCall
未被調用。
任何想法我做錯了/我應該做什麼?這是我的第二週做Objective-C,大部分時間我不知道我在做什麼,所以任何幫助/代碼將不勝感激!
謝謝。
這工作,感謝您的快速答案。你能否詳細說明/提供你最後的評論? – dandoen
您應該創建具有自解釋名稱的靜態常量,並將它們用於notificationName而不是NSStrings。作爲一個例子,你可能已經創建了一個常量'static NSString * const MYSuccessfullActionNotification = @「MYSuccessfullActionNotification」;'並將常量值傳遞給'[[NSNotificationCenter defaultCenter] postNotificationName:MYSuccessfullActionNotification object:nil];'。常量基本上可以讓你免於錯別字。 – Eugene