如何将表格视图单元格从一个表格视图移动到新的表格视图

Posted

技术标签:

【中文标题】如何将表格视图单元格从一个表格视图移动到新的表格视图【英文标题】:how to move a table view cell from one table view to a new table view 【发布时间】:2020-05-15 00:30:53 【问题描述】:

目前,我正在尝试将一个表格视图单元格从一个表格视图移动到另一个表格视图。我似乎无法掌握正确的机制,需要帮助完成这项任务。

现在我有一个未填充进度表视图单元格的任何目标的数组。

    var goals: [String] = []

这是此进度表视图其余部分的设置。

extension ViewController: UITableViewDataSource, UITableViewDelegate 
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
        return goals[section].count
    

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
    let cell = tableView.dequeueReusableCell(withIdentifier: "TodayGoalViewCell_1", for: indexPath) as? GoalTableViewCell
        cell?.goalLabel.text = goals[indexPath.section][indexPath.row]
        cell?.cellDelegate = self
        cell?.index = indexPath
        return cell!

func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? 
    return sections[section]


func numberOfSections(in tableView: UITableView) -> Int 
    return goals.count

在一个单独的文件中,我有另一个表格视图,它已经填满了目标。代码如下:

var goals = ["goal 1", "goal 2", "goal 3"]

extension GoalsViewController: UITableViewDataSource, UITableViewDelegate 

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
        return Goals.count
    

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
        let cell = tableView.dequeueReusableCell(withIdentifier: "GoalConversationsCell_1", for: indexPath)
        cell.textLabel?.text = Goals[indexPath.row]
        cell.textLabel?.lineBreakMode = NSLineBreakMode.byWordWrapping
        cell.textLabel?.numberOfLines = 3
        return cell
    


    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 
        if indexPath.section == 0 
            Goals.remove(at: indexPath.row)
            Goals.count != 0 
                showGoalSelected()
             else 
                Goals.append(contentsOf: theEmptyModel)
            
            tableView.reloadData()
        
    

我想这样当用户从已经有目标的表视图中选择一个目标时,这些目标会被移动到进度表视图。我该怎么做?

【问题讨论】:

为了清楚起见,文本在按钮中?为什么不只使用单元格的文本标签就足以满足您的需要。要捕获点击,为什么不听 tableview 的 didSelect 委托? 你的目标数组是一个一维数组。但是您在 tableview 委托方法中将其用作二维数组。 【参考方案1】:

如果您的单元格中有一个按钮,并且您想在单击此按钮时获得消息,则需要查看 protocol-delegate 模式。 p>

但您也可以尝试删除单元格内的按钮并使用文本标签。使用 didSelectRowAt 方法来捕捉对单元格、tableView 的点击。

我不知道你有什么样的设计和结构,我只是提供你的观点。

【讨论】:

另一种方法是实现一个带有加号图标的 UIBarbuttonitem,它会一直粘在你的导航栏上,然后像普通按钮一样监听它的事件。 如何实现 didSelectRowAt 方法?

以上是关于如何将表格视图单元格从一个表格视图移动到新的表格视图的主要内容,如果未能解决你的问题,请参考以下文章

将表格视图单元格从一个部分移动到另一个部分但收到错误

将单元格移动到表格视图中的新部分

移动到新视图控制器时导航栏隐藏

如何使用自定义按钮重新排序表格视图单元格,但不使用 ios 中的移动编辑图标

表格视图中的警告

表格视图单元格高度