我有一个 Controller ,它是这样显示的:
- (void)searchButtonTapped
{
NSLog(@"search button tapped");
VAGSearchViewController *svc = [[self storyboard] instantiateViewControllerWithIdentifier:@"searchPageSB"];
[self presentViewController:svc animated:NO completion:nil];
}
呈现它的 Controller 是一个 collectionView Controller 。我想要做的是让这个 collectionView 知道这个 searchViewController 什么时候被关闭,这样我就可以执行一个 Action 。
执行此操作的最有效方法是什么?
请注意,只有当 searchViewController 关闭时才需要执行此操作。
谢谢你的时间
最佳答案
您可以为此创建自己的委托(delegate)。
在 VAGSearchViewController.h 中
@class VAGSearchViewController;
@protocoll VAGSearchViewControllerDismissDelegate <NSObject>
- (void) searchViewControllerDismissed:(VAGSearchViewController*)searchViewController;
@end
//VAGSearchViewController Interface
@property (nonatomic, weak) id<VAGSearchViewControllerDismissDelegate> dismissDelegate;
关闭 viewController 时调用委托(delegate)的方法
[self.dismissDelegate searchViewControllerDismissed:self];
然后在您的 collectionViewController 中添加协议(protocol)
@interface MyCollectionViewController : UICollectionViewController <VAGSearchViewControllerDismissDelegate>
实现 didDismiss 方法并在呈现 searchViewController 时将 self 指定为委托(delegate):
- (void)searchButtonTapped
{
NSLog(@"search button tapped");
VAGSearchViewController *svc = [[self storyboard] instantiateViewControllerWithIdentifier:@"searchPageSB"];
svc.dismissDelegate = self;
[self presentViewController:svc animated:NO completion:nil];
}
- (void) searchViewControllerDismissed:(VAGSearchViewController*)searchViewController{
// do something here
}
关于ios - 如何仅在关闭特定 UIViewController 时才执行操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24850682/