gpt4 book ai didi

ios - iOS View TableViewCell 中的面向对象编程问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:38:47 25 4
gpt4 key购买 nike

关于 MVC 范例的事情是你的 View 不应该知道你的模型。我有一个自定义的 TableCellView,这意味着它没有直接 View Controller 。它属于一个TableView。我的 tableView 当然有一个 Controller ,MyPetTableViewController。

无论如何,我的 CustomTableViewCell 有许多按钮和 ImageView,它们中的每一个都可以点击。根据单击哪个按钮/imageView,我需要:转到不同的选项卡 View ,或显示模态。如果我只是听表格行,那么 Controller 的工作就很简单了。但是如何让 Controller 监听表格单元格中的事件呢?我已经考虑过在 MyPetTableViewController 中使用 touchesEnded:withEvent 但是我不知道有问题的索引。所以我真的需要知道:单击了哪个表行中的哪个 View ?

最佳答案

这是我最终实现解决方案的方式

  • 我通过从 Storyboard拖动到我的 CustomTableViewCell 的 .h 文件来创建 IBOutlets。 (通常我的做法是将 IBOutlets 保存在 .m 文件中,但由于解决这个问题需要将它们公开,所以我不得不将它们放在 .h 文件中) .

  • 在实现我的 TableView 数据源和委托(delegate)方法的 Controller 中,在方法 tableView:cellForRowAtIndexPath: 中,我设置了按钮的目标。例如。 [cell.imageButtonOne addTarget:self action:@selector(userClicksButtonOne:) forControlEvents:UIControlEventTouchUpInside]

  • 然后作为最后一步,我将 userClicksButtonOne 实现为

代码:

- (void) userClicksButtonOne:(id)sender
{
CGPoint buttonPosition = [sender convertPoint:CGPointZero toView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:buttonPosition];
if (indexPath != nil)
{
...
}
}

关于ios - iOS View TableViewCell 中的面向对象编程问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24973052/

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