gpt4 book ai didi

swift - 为什么我不能在 Apple Watch 的接口(interface) Controller 之间发送数据?

转载 作者:搜寻专家 更新时间:2023-10-31 22:42:51 25 4
gpt4 key购买 nike

基本上,我要做的是从一个接口(interface) Controller 传递一个整数。 Controller “SecondPage”中的 slider 将从 slider 获取一个整数值,并将其发送到名为“ThirdPage”的界面 Controller 并将该标签的标题设置为该值。我尝试了很多方法,但都无济于事。我只是想从第二个界面 Controller 发送上下文,在第三个 Controller 的 awake(withContext context: Any?) 方法中接收它,并将它保存为标题,直到再次更改 slider 。

这是我在第二个页面 Controller 中首先尝试的,但它没有传递任何数据:

override func contextForSegueWithIdentifier(segueIdentifier: String) -> AnyObject? {
if segueIdentifier == "ThirdPage"{
return sliderval
}
return nil
}

这是我在那之后尝试的方法,它传递了数据但没有“保存”它。它弹出带有更新标签的界面 Controller 到 slider 值,但我不希望它弹出,我希望将该值保存到标签中。当我关闭弹出窗口并向右滑动到第三页时,该标签仍称为“标签”

self.presentController(withName: "ThirdPage", context: sliderval)

这是一些输出图片以及我的一些代码。感谢您的帮助,谢谢。 PS:这一切都在 Swift 3 中 enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

最佳答案

您正在使用基于页面的导航,并且需要在页面之间传递数据。

我要做的是将 slider 中的数据保存在第三页可以访问的某个位置,然后将数据填充到 willActivate 上的标签中。当用户在页面之间滑动时,系统应调用 willActivate 方法。

在全局范围内,创建一个变量来保存 slider 值。

var sliderValue: Float = 0

在你的第二个界面 Controller 中,当 slider 改变时设置这个值。

@IBAction func sliderChanged(_ value: Float) {
sliderValue = value
}

在您的第三个界面 Controller 中,当页面即将出现时,将标签设置为正确的值。

override func willActivate() {
label.setText("\(sliderValue)")
}

如果您想避免使用全局变量,您可以从用户默认值读取和写入,或使用其他策略,但这将取决于您的应用程序的确切需求。

关于swift - 为什么我不能在 Apple Watch 的接口(interface) Controller 之间发送数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43432324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com