从另一个视图控制器中退出第一响应者

Posted

技术标签:

【中文标题】从另一个视图控制器中退出第一响应者【英文标题】:Resign First Responder from another View Controller 【发布时间】:2013-07-28 22:06:41 【问题描述】:

我有一个奇怪的案例,我使用来自John Lluch 的出色 SWRevealViewController 来让 2 个侧边导航控制器(如 Facebook 应用程序)在 UIBarButtonItem 被触摸时向左和向右滑出。

但是 - 我需要前视图控制器确保在这些操作发生时让第一响应者辞职,但是这些条形按钮的相关操作发生在另一个视图控制器类中。

我需要:

    将另一个操作与 UIBarButtonItem 相关联,我可以在需要退出第一响应者的视图中调用该操作或 在任一侧视图的 ViewDidAppear 或 SWRevealController 类中为主视图退出第一响应者

您可以从另一个视图控制器中为一个视图辞去第一响应者吗?

【问题讨论】:

【参考方案1】:
you can do it using NSNotificationCenter as below.

//.m file:  
 [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(LoadTableBasedOnCorner:) name:@"LoadTable" object:nil]; 

in which class you use above addObserver, you have to implement that method.

//.m file from where you want to send action, call method as below.

[[NSNotificationCenter defaultCenter] postNotificationName:@"LoadTable" object:nil];

【讨论】:

这就是我所做的!我希望有一个更好的答案,但这确实非常有效。我对 Objective-C(或者说老实说任何语言的内存管理)都不太了解,但它对我来说感觉像是一个内存密集型解决方案,因为它在每个类中都可读。尽管如此,它并没有减慢任何速度,而且我们在这个应用程序中使用了几乎 0 内存,所以不管怎样。

以上是关于从另一个视图控制器中退出第一响应者的主要内容,如果未能解决你的问题,请参考以下文章

从另一个 XIB (iPhone) 的视图控制器加载 XIB

NSTextView:在故事板应用程序中辞职第一响应者

从另一个类访问 viewController 元素

在视图控制器中处理发送给第一响应者的消息

我可以从另一个模态视图控制器中推送模态视图控制器吗?

为啥我不能从另一个控制器中删除视图?