Objective-C:如何将信号从视图发送到视图控制器以更改视图?

Posted

技术标签:

【中文标题】Objective-C:如何将信号从视图发送到视图控制器以更改视图?【英文标题】:Objective-C: How to send signal from view to view controller to change views? 【发布时间】:2010-11-05 21:49:29 【问题描述】:

我有一个视图控制器来控制视图之间的切换。我希望其中一个视图向视图控制器发出信号以切换到另一个视图(并且无法弄清楚我该如何做到这一点。)

为了更清楚(希望如此):我的视图控制器插入了一个子视图。该子视图有一个 UITableView。我想,当您在 UITableView 中选择一行时,删除当前子视图,然后切换到不同的子视图。当然,我更希望视图控制器继续跟踪加载了哪个子视图。

这有意义吗? (我还是很喜欢 Objective-C。)

有没有办法从子视图(视图控制器创建的)向视图控制器发送消息?有没有其他方法可以做到这一点?

非常感谢您的帮助...如果需要,我很乐意澄清。

【问题讨论】:

非常常见的问题。两种主要的推荐方式是 NSNotificationCenter(更简单)和委托+协议。在 SO 或 Google 中搜索这些关键字,然后您可能会有更具体的问题。 【参考方案1】:

您可能会考虑设置 UINavigationController。使用 2 UIViewControllers 来控制各个视图,并使用导航控制器在 2 个视图之间切换。从 UITableView 中,您可以简单地实现该方法 -

(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

使用此方法分配您要显示的新视图控制器

然后调用 Navigation 控制器将新的视图控制器压入堆栈 -

[self.navigationController pushViewController:controllerName Animation:YES]

最后,释放消失的视图控制器。

通过这种方式,导航控制器可以跟踪谁被加载,并且可以实现诸如动画转换之类的便利功能。还要确保查找 UITableViewController 子类 - 它是 UIViewController 的子类,但它提供了一些处理表格的便利功能,例如知道用户何时选择特定行,并允许大多数 ios 应用程序的标准编辑功能。

【讨论】:

以上是关于Objective-C:如何将信号从视图发送到视图控制器以更改视图?的主要内容,如果未能解决你的问题,请参考以下文章

发送数据时如何更新视图控制器而不是推送视图控制器?

如何将标签中的数据从表视图行操作发送到视图控制器?

如何使用ajax将数据从视图发送到控制器laravel?

当 UITextField 被填充时,从一个类向视图控制器发送信号或触发函数

NavigationLink 101:如何将数据从主机发送到辅助视图?

如何将数据从一个视图控制器发送到另一个视图控制器[重复]