我使用循环设置标签栏项目的原始图像,因此未选择的状态不是灰色的(我的原始图标为白色)。但是,看起来最近的Xcode 8更新破坏了代码:
for (items in 0 ..< tabBar.items!.count ){
let tabItemIndex = tabBar.items![items]
tabItemIndex.image = tabItemIndex.image!.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
}
}
我在第一行收到以下错误:Expected 'in' after for-each pattern
,Expected Sequence expression for for-each loop
和Expected pattern
。
任何人都可以帮我解决这个问题吗?它一直很好,直到今天。
谢谢!
答案 0 :(得分:9)
for x in y
是Swift中的实际表达式。你无法用括号for (x in y)
分解它 - 将for
与in
分开并使表达式对编译器来说似乎是无意义的。
所以,删除括号,一切都会好的。
答案 1 :(得分:2)
关于如何创建循环,以及一些非常不安全的强制解包,你会遇到一些问题。试试这个:
if let items = tabBar.items {
for tabBarItem in items {
if let image = tabBarItem.image {
tabBarItem.image = image.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
}
}
}
甚至更干净,像这样:
tabBar.items?.forEach { tabBarItem in
if let image = tabBarItem.image {
tabBarItem.image = image.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
}
}
答案 2 :(得分:0)
在Swift中,与Objective-C不同,此结构中没有括号。删除括号以修复语法错误。
然而,除了语法错误之外,还有样式和安全问题:请参阅picciano的答案,以便更清晰,更安全地重写循环。