2013-02-16 50 views
1

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

看来,我需要编写所有内删除逻辑...

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

然而,这是一个委托方法。表格单元格的Indexpath缺失?单击UIAlertView按钮后,如何访问UITableViewCell数据?

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

+0

您使用的自定义单元格? – Dilip 2013-02-16 17:10:24

+0

使用关联的对象 – 2013-02-16 17:28:47

+0

如果您满意的话,接受答案是一个好习惯 – 2013-02-16 17:34:13

回答

0

因为UIAlertView是模式的我看不出有什么问题,在一个(全局)变量呈现UIAlertView(也许在清除变量- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex之前保存UITableViewCell的indexPath(只是为了安全起见) 。 至少这是我做的,当我有这个问题。

PS。这是远远最好的做法,但只要你做一些基本的检查,你应该没问题。

+0

这也是另一个好主意。谢谢你的建议。 :) – Kann 2013-02-16 17:09:46

2

使用相关的对象。这是在此处更详细地描述Associated Objects

设置对象使用用途:

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

,并获得该对象。

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

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

参考: Can a UIAlertView pass a string and an int through a delegate

+0

欲了解更多信息去http://stackoverflow.com/questions/5439560/can-a-uialertview-pass-a-string-and-an-int-through-a-delegate – 2013-02-16 17:20:23

+0

+1今天学到了新东西。谢谢.. – 2013-02-16 17:35:16