删除UITableViewCell无删除按钮?
答
不要这样,
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
UIAlertView *Alert = [[UIAlertView alloc] initWithTitle:@"" message:@"Are you sure to commit with its action" delegate:self cancelButtonTitle:CKString(@"NO") otherButtonTitles:CKString(@"YES"),nil];
[Alert show];
Alert.tag=indexPath.row+1;
Alert.delegate=self;
[Alert release];
return UITableViewCellAccessoryNone;
}
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
}
在AlertView代表
-(void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
int indexPathRow=alertView.tag-1;
if(buttonIndex==1)
{
//// Yes condition
} else {
///// No condition
}
}
答
您可以添加gestureRecognizer到您的
UISwipeGestureRecognizer *recognizer =[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(removeCell:)];
recognizer.direction = UISwipeGestureRecognizerDirectionRight;
[cell addGestureRecognizer:recognizer];
[recognizer release];
,然后在removeCell方法
- (void)handleSwipeFrom:(UISwipeGestureRecognizer *)recognizer
{
UITableViewCell *cell = (UITableViewCell*)[recognizer view];
NSIndexPath* pathOfTheCell = [viewListTable indexPathForCell:cell];
NSInteger rowOfTheCell = [pathOfTheCell row];
NSInteger sectionOftheCell = [pathOfTheCell section];
UIAlertView *confirmationAlert = [[UIAlertView alloc]initWithTitle:@"Confirm" message:@"Are you sure you want to Delete this list?" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Delete", nil];
[confirmationAlert show];
confirmationAlert.delegate = self;
[confirmationAlert release];
}
答
添加UISwipeGestureRecognizer
到Cell
UISwipeGestureRecognizer *gesture;
gesture = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)] autorelease];
gesture.direction = UISwipeGestureRecognizerDirectionLeft;
[cell addGestureRecognizer:gesture];
gesture = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)] autorelease];
gesture.direction = UISwipeGestureRecognizerDirectionRight;
[cell addGestureRecognizer:gesture];
而且里面的确认选择方法的提示删除
- (void)handleSwipeFrom:(UISwipeGestureRecognizer *)recognizer
{
//Use recognizer.direction to check left/right swipe if needed
//Prompt Alert
CGPoint location = [recognizer locationInView:tableView];
NSIndexPath *swipedIndexPath = [tableView indexPathForRowAtPoint:location];
UITableViewCell *swipedCell = [tableView cellForRowAtIndexPath:swipedIndexPath];
}
+0
我需要能够访问单元格的indexPath。 – ranjha 2013-02-27 04:55:54
+0
请看最新的答案 – 2013-02-27 05:06:19
答
在Alertview委托
if (alertView.tag == index)
{
if (buttonIndex == 1)
{
[yourArray removeObjectAtIndex:alertView.tag-1];
[yourTable reloadData];
}
}
仍然有同样的问题,我该如何访问indexPath删除alertView委托中的行? – ranjha 2013-02-27 04:52:47
看到所有人都告诉我添加GestureRecognizer。 – ranjha 2013-02-27 04:55:12
不便之处...... – Venkat 2013-02-27 04:57:26