繁体   English   中英

在 UITableViewController 中插入行而不替换行 - SWIFT

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM