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

发布于 2024-09-30 20:10:33 字数 322 浏览 3 评论 0原文

我有一个视图控制器来控制视图之间的切换。我希望其中一个视图向视图控制器发出信号以切换到另一个视图(并且不知道如何执行此操作。)

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

这有道理吗? (我对 Objective-C 还很陌生。)

有没有办法从子视图(视图控制器创建的)向视图控制器发送消息?还有其他方法可以实现此目的吗?

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

I have a view controller that controls the switching between views. I would like one of the views to signal the view controller to switch to another view (and can't figure out how I can do this.)

To be more clear (hopefully): My view controller inserts a subview. That subview has a UITableView. I'd like, when you select a row in the UITableView, to remove the current subview and then switch to a different sub-view. Of course, I'd prefer the view controller to continue to keep track of which subview is loaded.

Does this make sense? (I'm still pretty green with Objective-C.)

Is there a way to send the view controller a message from the sub-view (that the view controller created)? Is there another way to accomplish this?

Thanks a bunch for the help... and I'd be happy to clarify if needed.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

衣神在巴黎 2024-10-07 20:10:33

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

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

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

,然后调用导航控制器来推送新的视图控制器入栈 -

[self.navigationController PushViewController:controllerNameanimated:YES]

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

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

You might look into setting up a UINavigationController. Use the 2 UIViewControllers to control the individual views, and use the Navigation Controller to switch between the 2 views. From the UITableView, you can simply implement the method -

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

Use this method to alloc the new view controller that you want to display

Then call the Navigation controller to push the new view controller onto the stack -

[self.navigationController pushViewController:controllerName animated:YES]

Finally, release the view controller that has disappeared.

This way the navigation controller keeps track of who is loaded, and can implement convenience functions like animating the transition. Also make sure to lookup the UITableViewController subclass - it is a subclass of UIViewController, but it provides some convenience functions for dealing with tables, like knowing when the user selects a particular row, and allows for the standard edit functions of most iOS apps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文