我似乎无法在自定义UITableViewCell内正确处理按钮。它是一个包含标签和按钮的单元格。我有以下代码:
var cell = tableView.DequeueReusableCell (cellKey) as ApptHistoryCell;
if (cell == null)
{
cell = _container.Cell;
cell.SelectionStyle = UITableViewCellSelectionStyle.None;
}
if (InfoClicked != null)
{
cell.ActionButton.TouchUpInside += InfoClicked;
}
InfoClicked是在单元格创建循环中传递的事件处理程序。当重新使用单元格时,这会导致空引用异常,因为(我认为)TouchUpInside正在尝试调用2个处理程序。旧的和新的,导致崩溃。如果我将事件处理程序放在cell == null if block中,则会显示错误的操作。
如何正确处理点击?
谢谢!
答案 0 :(得分:5)
我处理自定义单元格内按钮的方式:
有道理吗?
答案 1 :(得分:0)
您应该从xib文件创建单元格,该文件已将按钮连接到所有者的目标(视图控制器)。
答案 2 :(得分:-3)
在您的自定义单元格中,只需在IB处找到您的按钮并与该属性建立连接。
现在,在cellForRowAtIndexPath
的控制器中,只需标记该按钮,即可:
(MyCustomCell*)cell.myButton = indexPath.row;
现在,之后只需设置点击事件: -
[(MyCustomCell*)cell.myButton addTarget:self action:@selector(NeedFunctionToCall:) forControlEvents:UIControlEventTouchUpInside];
现在,在同一个视图控制器上,实现所需的方法,如:
-(void)NeedFunctionToCall:(id)sender
{
NSLog("Got the event :-> %d, from the cell/button",[sender tag]);
}