1

我在 UITableView 单元格中有一个删除按钮。此按钮的功能是从 Core Data 中删除该特定单元格的内容。此过程无法撤消;所以,我添加了 UIAlertView 让用户在继续删除之前确认他们的决定。

看来我需要在里面编写所有删除逻辑......

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex

但是,这是一个委托方法。表格单元格的索引路径丢失?点击 UIAlertView 按钮后如何访问 UITableViewCell 数据?

我现在想到的一个想法是遍历使用alertview.superview直到找到 UITableViewCell,并访问它的 indexPath 属性。但这似乎并不优雅。应该有另一种方法来解决这个问题吗?

4

2 回答 2

2

使用关联对象。此处更详细地描述了相关对象

要设置您使用的对象,请使用:

objc_setAssociatedObject(alert, &key, userCode, OBJC_ASSOCIATION_RETAIN);

并获取对象。

SOCode *userCode = objc_getAssociatedObject(alertView, &key);

永远不要忘记导入<objc/runtime.h>,您还需要添加static char key;所以它在这两种方法的范围内。

参考: UIAlertView 能否通过委托传递字符串和 int

于 2013-02-16T17:19:21.813 回答
0

因为是模态的,所以我在保存(全局)变量之前UIAlertView的 indexPath 没有看到任何问题(并且可能清除该变量(只是为了安全起见)。至少这是我所做的当我遇到这个问题时。UITableViewCellUIAlertView- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex

附言。这远非最佳实践,但只要您进行一些基本检查,您应该没问题。

于 2013-02-16T17:05:59.373 回答