array.index (of: ) 无法正常工作

Posted

技术标签:

【中文标题】array.index (of: ) 无法正常工作【英文标题】:array.index (of: ) not working properly 【发布时间】:2017-09-16 23:56:02 【问题描述】:

我正在尝试在数组中查找 UITableViewCell 文本。问题是无论我点击哪个单元格,array.index(of:) 总是返回 1。

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 
    let cell =  tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
    if let text = cell.textLabel?.text 
        let indexOfCellString = event.index(of: text)
        print (indexOfCellString!)
    


//here is my attempt to set the cell text:
 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell

    let cell =  tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
    if eventIndex.indices.contains(indexPath.row) == true 
    cell.textLabel?.text = event [indexPath.row]
    

    return cell

event 是一个数组,我试图在其中搜索并查找单元格的文本。 并且单元格的文本始终在事件索引中。因为我的 tableview 从事件数组中读取信息。因此它不应该总是返回 1。 我做错了什么?

【问题讨论】:

如果没有更多信息,没有人可以帮助您。你还没有解释event 是什么。您尚未提供有关 text 所包含内容的任何详细信息。您发布的代码无效。 self) 行是什么? 它应该返回 cell.textlable.text 所在事件的索引。但无论我点击哪个表格行,它总是返回 1。不用说表格行中有不同的字符串 你在哪里设置单元格标签的文本? 我编辑了问题并添加了我的尝试 【参考方案1】:

切勿在cellForRowAt 之外使用dequeueReusableCell。只需从您的数据模型中访问您的数据。

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 
    if eventIndex.indices.contains(indexPath.row) == true 
        let text = event[indexPath.row]
        if let indexOfCellString = event.index(of: text) 
            print("Found index: \(indexOfCellString)")
         else 
            print("text not found")
        
    

【讨论】:

以上是关于array.index (of: ) 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

forEach,for in,for of循环的用法

for …each…in,for in ,for of

nth-of-type奇数/偶数没有按预期工作[重复]

斯威夫特火力.observe或.observeSingleEvent将无法正常工作

使用apoc.path.subgraphAll进行密码查询,似乎限制配置无法正常工作

将小部件移动到另一个文件后,Flutter Localization功能无法正常工作?