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:如何将信号从视图发送到视图控制器以更改视图?的主要内容,如果未能解决你的问题,请参考以下文章
当 UITextField 被填充时,从一个类向视图控制器发送信号或触发函数