TableView单元格未加载视图控制器,直到单击不同的TableView单元格

时间:2018-06-09 16:37:28

标签: ios swift uitableview segue pushviewcontroller

我已经四处寻找,并且没有真正找到为什么会发生这种情况。基本上,我按照Jared Davison的教程https://www.youtube.com/watch?v=yupIw9FXUso来创建Table View Cells到多视图控制器。在他的例子中,一切都很完美,但出于某种原因,当你点击代码中的表格视图单元格时,单元格会以灰色突出显示。然后,当用户单击单独的表视图单元格时,将加载应由第一个表视图单元格加载的视图控制器。如果用户然后单击原始表视图单元格,则加载应该由第二个表视图单元格加载的页面。总之,所有视图控制器都加载了一个" click"后面。

以下是表格视图的代码:

//Feed Navigation Functions
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return elements.count
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return 75
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "feedCell") as! FeedTableViewCell
    cell.txtTitle.text = "The Fight Against \(elements[indexPath.row])"
    cell.issueIcon.image = UIImage(named: "Issue Icons_\(elements[indexPath.row])")
    return cell
}
func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
    let vcName = identities[indexPath.row]
    let viewController = storyboard?.instantiateViewController(withIdentifier: vcName)
    self.navigationController?.pushViewController(viewController!, animated: true)
}

更新:数组是一个简单的字符串数组,例如[One, Two, Three],数组中有6个字符串。

3 个答案:

答案 0 :(得分:2)

当您选择一个单元格然后选择另一个单元格时,方法didDeselectRow被调用,因此Vc被推送您实际想要实现didSelectRowAt

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    let vcName = identities[indexPath.row]
    let viewController = storyboard?.instantiateViewController(withIdentifier: vcName)
    self.navigationController?.pushViewController(viewController!, animated: true)

    // this to deSelect it after push
    tableView.deselectRow(at: indexPath, animated: false)

}

选择单元格时会触发此方法

  

func tableView(_ tableView:UITableView,didSelectRowAt indexPath:IndexPath

取消选择单元格时触发此方法

  

func tableView(_ tableView:UITableView,didDeselectRowAt indexPath:IndexPath

答案 1 :(得分:1)

问题:click on a table view cell in my code the cell is highlighted in grey 这是由selectionStyle引起的,您可以阅读here。如果您不希望突出显示该单元格,则可以设置cell.selectionStyle = .none

编辑:正如其他正确答案所示 - 问题是方法中的错误/拼写错误 - 我们应该使用didSelectRowAt而不是didDeselectRowAt

答案 2 :(得分:1)

你想使用tableView的委托方法didSelectRow而不是didDeselectRow我认为......