如何将表格视图单元格从一个表格视图移动到新的表格视图
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 方法?以上是关于如何将表格视图单元格从一个表格视图移动到新的表格视图的主要内容,如果未能解决你的问题,请参考以下文章