[英]Insert row in UITableViewController without replacing row - SWIFT
在我的应用程序中,我从 Firebase 提取数据。 我有一个 UITableViewController 并想从应用程序中连续插入一个文本。 数据拉取是这样的(请原谅不好的例子,但我不能太详细..)
原始数据拉取:
第 1 行:ABC
第 2 行:定义
第 3 行:ghi
第 4 行:jkl
第 5 行:mno
我想达到的目标:
第 1 行:ABC
第 2 行:定义
第 3 行:来自应用程序的文本
第 4 行:ghi
第 5 行:jkl
第 6 行:来自应用程序的文本
第 7 行:mno
我怎样才能做到这一点? 我试图在cellForRowAt
中做这样的事情
if indexPath.row % 3 == 0 {
cell.text = "custom text"
}
但这正在替换每第三行的内容。 可以这么说,我想在两者之间划一排。
您可以使用本地数据修改服务器数据。
var serverData = ["a","b","c","d","e","f","g","h","i","j","k","l","m"]
let localAppData = ["1","2","3","4","5","6","7","8","9","10"]
var modified = [String]()
var counter = 0
for index in 1...serverData.count {
let value = serverData[index - 1]
if index % 3 == 0 && index != 0 {
if counter < localAppData.count {
modified.append(localAppData[counter])
}else{
modified.append(value)
}
counter += 1
}else{
modified.append(value)
}
}
serverData.removeAll()
serverData.append(contentsOf: modified)
print(serverData) //["a", "b", "1", "d", "e", "2", "g", "h", "3", "j", "k", "4", "m"]
if counter < localAppData.count {
// Appeds the remain local data to your serverData
serverData.append(contentsOf: localAppData[counter...localAppData.count-1])
}
print(serverData) //["a", "b", "1", "d", "e", "2", "g", "h", "3", "j", "k", "4", "m", "5", "6", "7", "8", "9", "10"]
注意:修改后你必须重新加载tableView
您可以通过在第三个位置插入值来更新数据源,并在 cellforrowat 中使用该数据源
var a = ["a", "b", "c", "d", "e", "f", "g", "h", "i"]
var temp = a
for (ind, _) in a.enumerated() {
if ind % 3 == 0 && ind != 0 {
temp.insert("current text", at: ind)
}
}
print(temp) // Prints ["a", "b", "c", "current text", "d", "e", "current text", "f", "g", "h", "i"]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.