【问题标题】:How do I perform an action only when a specific UIViewController is dismissed?仅当特定 UIViewController 被解除时,如何执行操作?
【发布时间】:2014-09-11 02:34:46
【问题描述】:

我有一个控制器,它是这样显示的:

- (void)searchButtonTapped
{
    NSLog(@"search button tapped");
    VAGSearchViewController *svc = [[self storyboard] instantiateViewControllerWithIdentifier:@"searchPageSB"];

    [self presentViewController:svc animated:NO completion:nil];
}

呈现它的控制器是一个collectionView 控制器。我想做的是让这个 collectionView 知道这个 searchViewController 什么时候被解除,这样我就可以执行一个操作。

最有效的方法是什么?

请注意,此操作只需要在 searchViewController 关闭时执行。

感谢您的宝贵时间

【问题讨论】:

  • 我认为有一个搜索代理
  • 已检查,没有我可以用于此问题的搜索栏或搜索显示控制器委托。
  • searchViewController 是如何解散的?你可以写一个协议,比如 SearchViewControllerDelegate,在 searchViewController 被解除后,它会调用 [self.delegate searchViewControllerDismissed];
  • 它在 didSeledtRowAtIndexPath 方法中被解除。当点击一行时,我需要在搜索控制器关闭后在集合视图控制器上运行特定查询。委派可能只是工作。我会试试看。

标签: ios objective-c cocoa-touch uiviewcontroller uistoryboard


【解决方案1】:

您可以为此创建自己的委托。

在 VAGSearchViewController.h 中

@class VAGSearchViewController;
@protocoll VAGSearchViewControllerDismissDelegate <NSObject>
- (void) searchViewControllerDismissed:(VAGSearchViewController*)searchViewController;
@end

//VAGSearchViewController Interface
@property (nonatomic, weak) id<VAGSearchViewControllerDismissDelegate> dismissDelegate;

在关闭 viewController 时调用委托上的方法

[self.dismissDelegate searchViewControllerDismissed:self];

然后在你的 collectionViewController 中添加协议

@interface MyCollectionViewController : UICollectionViewController <VAGSearchViewControllerDismissDelegate>

实现 didDismiss 方法并在呈现 searchViewController 时将 self 分配为委托:

- (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
}

【讨论】:

  • 似乎是最好的方法,但认为有比委托更简单的方法,但效果很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-15
  • 1970-01-01
  • 2017-12-22
  • 2018-04-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多