我有一个视图控制器,在uiview中有一个uitableview。委托和数据源正确嵌入,一切正常。
我正在使用commitEditingStyle和canEditRowAtIndexPathMethods委托方法来滑动以删除功能。
方法的用法如下。
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
NSDictionary *dataElement = [cartArray objectAtIndex:indexPath.row];
NSString *productId = [dataElement objectForKey:@"id"];
NSString *productSizeId = [dataElement objectForKey:@"beden_id"];
[self deleteTableRowWithId:productId sizeId:productSizeId];
}
}
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath{
return YES;
}
滑动手势和委托方法在模拟器和设备上测试的iOS7上都没有任何问题,但是在iOS8上,滑动手势无法正常工作。
我在iOS8上使用iPhone 6对其进行了测试并激活了滑动我需要从边缘表单元格中滑动20次或更多次,有时甚至无法获得滑动删除按钮。
我检查并尝试了大多数堆栈溢出的解决方案。任何帮助或建议都将深表感谢。
故事板中的层次结构如下图所示。
答案 0 :(得分:2)
同样的问题,滑动只能在模拟器和设备上大约20%的时间工作。在我的情况下,它是由ECSlidingViewController(一种流行的滑动菜单实现)引起的,它设置了一个水平平移手势来打开菜单。需要在控制器的viewDidAppear:
中禁用此手势,以便滑动到删除才能正常工作:
#import "ECSlidingViewController.h"
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
// Disable sliding menu pan gesture so it doesn't conflict with table view swipe-to-delete
self.slidingViewController.panGesture.enabled = NO;
}
如果您希望其他控制器能够使用它,请务必重新启用平移手势:
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
// Re-enable sliding menu pan gesture so other controllers can use it
self.slidingViewController.panGesture.enabled = YES;
}
有关此问题的详情,请参阅此拉取请求:https://github.com/ECSlidingViewController/ECSlidingViewController/pull/70
简而言之,无论您是否正在使用ECSlidingViewController,请确保没有其他平移手势设置与滑动到删除平移手势相冲突。
答案 1 :(得分:0)
有时,还有其他手势识别器,而不仅仅是panGesture。如果你想保留平移手势或其他识别器,并且仍然允许滑动删除,我在可见视图控制器中完成了以下类别:
append_cast <- {}
for(i in 1:3)
{
i<-1
startLearn2<-1+i*10
EndLearn2<-EndLearn1+i*10
y <- tsData[startLearn2:EndLearn2]
fit_new <- Arima(y, model=fit_Model )
append_cast <- append(append_cast, c(ModelCast$mean,forecast(fit_new, h=10)$mean, after=i*10)) ## Only seems to append one forecast instead of 3
}