我有一个带有自定义单元格的tableView,该单元格带有两个标签和两个UITextField,有时我的tableView的行数为X,但是我只需要填充前三个UITextFields。
要解决这个问题,我目前正在检查差异cellForRowAt
,并像这样附加空字符串
if tableView.numberOfRows(inSection: 0) > someArray.count {
var difference = tableView.numberOfRows(inSection: 0) - someArray.count
while difference > 0 {
someArray.append("")
difference -= 1
}
虽然这行得通,但感觉并不十分优雅,希望能找到更好的方法。
谢谢您的建议。
答案 0 :(得分:0)
最好的方法是,如果索引大于或等于someArray的大小,则将文本字段text属性设置为“”:
cell.textField.text = indexPath.row < someArray.count ? someArray[indexPath.row] : ""
我认为他们在评论中建议的是什么。
您似乎只想清理代码,并拥有一种更干净的方法来使用默认值填充数组。我会像这样使用Array.init(repeating repeatedValue: Element, count: Int)
:
let difference = tableView.numberOfRows(inSection: 0) - someArray.count
if difference > 0 {
someArray.append(contentsOf: Array(repeating:"", count: difference))
}
您可以真正地获得可爱,并创建一个数组扩展来为您做:
extension Array {
mutating func append(repeating repeatedValue: Element, count: Int) {
if count > 0 {
append(contentsOf: Array(repeating: repeatedValue, count: count))
}
}
}
然后:
someArray.append(repeating: "", count: tableView.numberOfRows(inSection: 0) - someArray.count)