gpt4 book ai didi

ios - Swift 3 - 在代码中访问嵌套 subview 属性

转载 作者:行者123 更新时间:2023-11-29 00:19:10 26 4
gpt4 key购买 nike

出于纯粹的培训目的,我正在开发一个天气应用程序,对整个 UI 进行编码,而不是使用 Storyboard。

我有一个嵌套的 View 结构,如下所示:

SuperView --> UIView(有 5 个 UIView 类型的 subview )。5个UIView中的每一个包含:1个UIImageView,2个UILabels

现在,当我调用委托(delegate)函数来检索天气时,我无法使用天气图标、天气描述、日期更新这些值。

我尝试为每个 subview 使用标签,但没有任何乐趣。

给你一些东西看:

这是我检索预测数据(图标、描述、日期)的地方:

//MARK: Forecast Wheel elements
let forecastWeatherWheel = UIView()
var forecastDays = [String]()
var forecastDescriptions = [String]()
var forecastIcons = [String]()


func setForecastWeather(forecast: ForecastWeatherData) {

forecastDays = forecast.forecastDay
forecastDescriptions = forecast.weatherDescription
forecastIcons = forecast.icon

for (index,forecastContainerView) in (forecastWeatherWheel.subviews.filter{$0 is UIView}).enumerated(){
for (index,iconImageView) in (forecastContainerView.subviews.filter{$0 is UIImageView}).enumerated(){
let iconImage = iconImageView as! UIImageView
iconImage.image = UIImage(imageLiteralResourceName: forecastIcons[index])
}
}
}

有了这个嵌套,我已经 - 以某种方式 - 能够访问我的嵌套 View 的图像属性,但不是循环遍历图标数组,而是在所有 5 个 subview 中始终使用相同的图标...

非常感谢任何帮助,因为我已经在这个问题上苦苦挣扎了 12 个小时以上:|

最佳答案

真正的答案当然是使用 View 子类,使用 ImageView 和每个标签的访问器,而不是像这样使用 subview 层次结构。但是你现在所做的事情有什么问题:

for (index,forecastContainerView) in (forecastWeatherWheel.subviews.filter{$0 is UIView}).enumerated(){

这里的过滤器是没有意义的; subviews 中的所有内容都是 UIView。您将获得 5 次通过这里的机会。

        for (index,iconImageView) in (forecastContainerView.subviews.filter{$0 is UIImageView}).enumerated(){

此处的过滤器只会返回一个 View - ImageView ,因为其他 View 不是 ImageView 。这意味着这个循环只会执行一次。

            let iconImage = iconImageView as! UIImageView
iconImage.image = UIImage(imageLiteralResourceName: forecastIcons[index])

这意味着 index 是您的 inner 索引,它始终为 0。

要么为每个索引变量使用不同的名称,要么这样写(未经测试,在浏览器中输入):

for (index, forecastContainerView) in forecastWeatherWheel.subviews.enumerated() {
let imageView = forecastContainerView.subviews.first(where: { $0 is UIImageView } ) as! UIImageView
imageView.image = UIImage(imageLiteralResourceName: forecastIcons[index]
}

关于ios - Swift 3 - 在代码中访问嵌套 subview 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44461215/

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