表示されたビューにタブバー コントローラーが含まれるモーダル ビューを表示しました。ビューは正しく表示されますが、タブバー ビュー コントローラーのボタンに DismissModalViewController を追加すると、非表示になりません。ビューに何も起こりません。
そのモーダルView Controllerを閉じるにはどうすればよいですか?
表示されたビューにタブバー コントローラーが含まれるモーダル ビューを表示しました。ビューは正しく表示されますが、タブバー ビュー コントローラーのボタンに DismissModalViewController を追加すると、非表示になりません。ビューに何も起こりません。
そのモーダルView Controllerを閉じるにはどうすればよいですか?
表示側のビュー コントローラーは、モーダル ビュー コントローラーの破棄も処理する必要があります。デリゲートを使用して、提示したView Controllerを閉じることができることを提示しているView Controllerに通知する必要があります。
モーダル ビュー コントローラーで:
@protocol SomeProtocol<NSObject>
- (void)didFinishDoingWhatItNeedsToDo:(id)sender;
@end
@interface ModalViewController : UIViewController
@property (nonatomic, weak) id <SomeProtocol> delegate;
@end
@implementation
- (IBAction)buttonClicked:(id)sender {
[self.delegate didFinishDoingWhatItNeedsToDo:self];
}
次に、表示側のビュー コントローラーで次のようにします。
@interface SomeObject : UIViewController <SomeDelegate>
@end
@implementation
- (void)someMethod {
ModalViewController *mvc = [[ModalViewController alloc] init];
mvc.delegate = self;
[self presentViewController:mvc animated:YES completion:nil];
}
- (void)didFinishDoingWhatItNeedsToDo:(id)sender {
[self dismissViewControllerAnimated:YES completion:nil];
}
コントローラーにタブバーを表示していたときは、次を使用している必要があります。
[self presentModalViewController:newTabBarController animated:YES];
辞退したいときは、こう言わなければなりません。
[self.tabBarController dismissModalViewControllerAnimated:YES]
[[self parentViewController] dismissModalViewControllerAnimated:YES];