gpt4 book ai didi

ios - 以编程方式选择单元格时通知 UITableViewController

转载 作者:行者123 更新时间:2023-11-28 10:18:40 25 4
gpt4 key购买 nike

我的表格 View 允许选择多个单元格,当单元格内的按钮被单击时,每个单元格都将自己设置为选中状态(类似于 gmail 应用程序的操作,请参见下图)。我正在寻找一种方法让 UITableViewController 知道单元格已被选中或取消选中,以便手动更改 UINavigationItem。我希望有一种方法可以通过使用委托(delegate)方法来做到这一点,但我似乎找不到。 didSelectRowAtIndexPath 正在处理对单元格本身的点击,不应影响单元格的选定状态。

enter image description here

最佳答案

最直接的方法是为您的单元格创建我们自己的委托(delegate) protocol,您的 UITableViewController 将采用该委托(delegate)。当您将单元格出队时,您还将单元格上的 delegate 属性设置为 UITableViewController 实例。然后单元格可以调用您的协议(protocol)中的方法来通知UITableViewController正在发生的操作,并且它可以根据需要更新其他状态。下面是一些示例代码来说明这个想法(请注意,我没有通过编译器运行它,所以可能会有拼写错误):

protocol ArticleCellDelegate {
func articleCellDidBecomeSelected(articleCell: ArticleCell)
func articleCellDidBecomeUnselected(articleCell: ArticleCell)
}

class ArticleCell: UICollectionViewCell {
@IBAction private func select(sender: AnyObject) {
articleSelected = !articleSelected

// Other work

if articleSelected {
delegate?.articleCellDidBecomeSelected(self)
}
else {
delegate?.articleCellDidBecomeUnselected(self)
}
}

var articleSelected = false
weak var delegate: ArticleCellDelegate?
}

class ArticleTableViewController: UITableViewController, ArticleCellDelegate {
func articleCellDidBecomeSelected(articleCell: ArticleCell) {
// Update state as appropriate
}

func articleCellDidBecomeUnselected(articleCell: ArticleCell) {
// Update state as appropriate
}

// Other methods ...

override tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueCellWithIdentifier("ArticleCell", forIndexPath: indexPath) as! ArticleCell
cell.delegate = self

// Other configuration

return cell
}
}

关于ios - 以编程方式选择单元格时通知 UITableViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37758739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com