gpt4 book ai didi

ios - 如何确定是否在自定义 UITableViewCell 上点击了 UIButton?

转载 作者:行者123 更新时间:2023-12-01 19:03:53 25 4
gpt4 key购买 nike

以下实现可以正常工作,但感觉不是最优雅的解决方案。
是否有任何最佳实践或不同的实现来确定是否在自定义 UITableViewCell 上点击了 UIButton?

- (IBAction)customCellButtonTapped:(id)sender {
UIButton *button = (UIButton *)sender;
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:button.tag inSection:0];
NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
NSManagedObject *object = [self.fetchedResultsController objectAtIndexPath:indexPath];
// Set the value of the object and save the context
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
TTCustomCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
[self configureCell:cell atIndexPath:indexPath];
[cell.customCellButton addTarget:self action:@selector(customCellButtonTapped:) forControlEvents:UIControlEventTouchUpInside];
[cell.customCellButton setTag:indexPath.row];
return cell;
}

最佳答案

我同意这是不雅的。由于单元格被重复使用,因此必须更改按钮标签以保持同步。更不用说,这些标签可能是为了它们的真正目的而需要的,这并不是告诉代码 View 在哪一行。

这是我在包含控件的表格 View 中一直使用的一种方法:

- (NSIndexPath *)indexPathOfSubview:(UIView *)view {

while (view && ![view isKindOfClass:[UITableViewCell self]]) {
view = view.superview;
}
UITableViewCell *cell = (UITableViewCell *)view;
return [self.tableView indexPathForCell:cell];
}

现在,在
- (IBAction)customCellButtonTapped:(id)sender {

NSIndexPath *indexPath = [self indexPathOfSubview:sender];
// use this to access your MOC

// or if we need the model item...
id myModelItem = self.myModelArray[indexPath.row];

// or if we need the cell
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];

关于ios - 如何确定是否在自定义 UITableViewCell 上点击了 UIButton?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21066783/

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