如何在使用 UIpageviewcontroller 导航页面时从另一个视图控制器自动更新视图控制器上的标签

Posted

技术标签:

【中文标题】如何在使用 UIpageviewcontroller 导航页面时从另一个视图控制器自动更新视图控制器上的标签【英文标题】:How to automatically update a label on a viewcontroller from another viewcontroller while using a UIpageviewcontroller to navigate pages 【发布时间】:2020-10-04 21:54:56 【问题描述】:

我目前正在使用 UIPageviewcontroller 在我的 3 个主要视图控制器之间导航。我有一个使用步进器在第一页上设置的全局变量。然后将该全局变量的值用作第二页上标签的值。

这可行,但它需要第二页上的按钮来更新标签。例外情况是当我第一次运行应用程序并在滑动到第二页之前更改第一页上的步进器时 - 因为我在“覆盖 func viewdidload()”中更新了标签

我不想使用按钮来更新第 2 页上的标签。我希望能够滑动到第 1 页,更改步进器,然后当我滑动回第 2 页时,第 2 页上的标签会自动更新. (反复)

我该怎么做?

有没有办法杀死 UIpageviewcontroller 中的视图控制器?或者有没有办法让“override fun viewdidload()”函数在我每次滑动到页面时运行?

【问题讨论】:

你应该看看delegates 也许你应该查看 UIViewController 文档:developer.apple.com/documentation/uikit/uiviewcontroller。试试 viewDidAppear。 【参考方案1】:

执行此操作的简单方法是在其 viewWillAppear 方法中更新第 2 页上的标签。每次返回第 2 页视图控制器时都会调用它。

然而,全局变量并不是设置数据处理的好方法。

最好将第 2 页的视图控制器设置为第一个视图控制器的委托。当用户在第一个视图控制器上更改步进器时,它可以在其委托上调用“valueChanged()”方法。

您应该阅读委托设计模式以了解如何执行此操作。它有很好的文档记录,是 ios 开发中最常见的模式之一。

【讨论】:

谢谢,成功了!我尝试使用代表,但无法弄清楚......最终求助于这里。您是否有很好的资料可供阅读以了解如何使其在这种情况下发挥作用?

以上是关于如何在使用 UIpageviewcontroller 导航页面时从另一个视图控制器自动更新视图控制器上的标签的主要内容,如果未能解决你的问题,请参考以下文章

如何在你的库中使用 Spring-Data 以及如何在你的项目中使用这个库?

在 Avkit 中如何使用这三行代码,以及如何将音乐静音”

如何在发布管道中使用输出变量

如何在Hive&Impala中使用UDF

如何使用 Firebase 在 Web 上托管 Flutter?它的效果如何?

如何在自动布局中使用约束标识符以及如何使用标识符更改约束? [迅速]