如何重新创建弹出视图?

Posted

技术标签:

【中文标题】如何重新创建弹出视图?【英文标题】:How to recreate the view on popping? 【发布时间】:2013-09-17 14:37:20 【问题描述】:

我的应用程序需要在视图控制器中添加一个自定义的新文本字段,即 View A 。 字段详细信息将填写在另一个视图中,即当我们单击添加字段按钮时被推送的视图 B。 截至目前,我正在推动添加文本字段按钮的视图,当所有字段详细信息在完成按钮上再次填充时,我正在推动前一个视图控制器的新实例,即视图 A。 我的文本字段正在添加,但现有的所有数据都从视图 A 的其余字段中删除。 我尝试在完成按钮上弹出视图,但它不会在视图 A 上创建新的文本字段,尽管所有字段数据都完好无损。

那么有没有办法在弹出时重新创建一个完整的视图,以便创建新的文本字段并且我在以前的视图控制器中的数据也不会丢失。

【问题讨论】:

请编辑您的帖子并澄清您在做什么,在您的标题中显示弹出视图控制器,在您的正文中显示弹出视图。视图控制器!=视图。这样我们就更容易为您提供帮助。 我只是不明白你的问题,对不起! 【参考方案1】:

如果你在 UINavigationController 中使用 push/pop 机制,以前的数据永远不会丢失。你的控制器层次结构应该是这样的;

UINavigationController --> FirstViewController --> DetailViewController

FirstViewController

DetailViewController *dvc = [self.storyboardinstantiateViewControllerWithIdentifier:@"DetailViewController"];
[self.navigationController pushViewController:mv animated:YES];

DetailViewController

[self.navigationController popViewControllerAnimated:YES];

或者您可以在情节提要上使用连接进行此操作。

【讨论】:

【参考方案2】:

您应该弹回之前的 ViewA,这样您就不会丢失您在此处输入的数据,而是在您这样做时在代码中添加一个新的文本字段。您可以使用从完成按钮调用的方法在 ViewB 中创建委托协议(您可能需要一个可以设置的标志,这样如果您只想创建一个文本字段,则只需调用一次该方法)。在 ViewA 中实现该方法将创建文本字段并将其添加到视图中的适当位置。

【讨论】:

以上是关于如何重新创建弹出视图?的主要内容,如果未能解决你的问题,请参考以下文章

弹出其他视图控制器时如何更改弹出视图大小

如何创建一个动态弹出并扩展其超级视图大小的子视图。 (在代码中)

如何在 Swift iOS 中创建一个通用的弹出视图控制器

如何在 iPhone 中使用 UIBezierPath 创建像 UIPopover 这样的视图?

如何在swiftui中的navigationitems下面创建一个弹出菜单

在 Interface Builder 中为 Iphone 创建弹出视图控制器