这里有很多类似的问题,但我认为没有一个问题特别提出这个问题,也就是说,代码中是否有任何方法强制红色删除按钮出现在UITableView行的右侧? / p>
我问的原因是我正在尝试使用两个UISwipeGestureRecognizer来改变tableview的行为,以便:
单指滑动会调用自定义操作(而不是显示红色删除按钮,这就是它现在的行为方式),
双指滑动调用默认的单指滑动行为,即显示红色删除按钮。
我已经浏览了SDK文档,但我找不到任何导致红色按钮出现的方法,这让我觉得如果不从头开始手动创建红色删除按钮,上面提出的UI方案就无法实现试图让它模仿内置的行为。
非常感谢任何帮助。
答案 0 :(得分:4)
在doubleFingerSwipe手势的选择器方法中,设置一个变量并指定为无刷的行并重新加载表。 在
- (UITableViewCellEditingStyle) tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
if(indexPath.row == yourVariable) return UITableViewCellEditingStyleDelete;
else return UITableViewCellEditingStyleNone;
}
我认为这适用于你的问题。
答案 1 :(得分:0)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *CellIdentifier = [NSString stringWithFormat:@"cell %d",indexPath.row];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
if(TableMethod==1)
{
UIButton *delete_btn=[UIButton buttonWithType:UIButtonTypeCustom];
[delete_btn setFrame:CGRectMake(10,15,25,25)];
delete_btn.tag=indexPath.row;
[delete_btn setImage:[UIImage imageNamed:@"remove_Icone.png"] forState:UIControlStateNormal];
[delete_btn addTarget:self action:@selector(delete_btn:) forControlEvents:UIControlEventTouchUpInside];
[cell addSubview:delete_btn];
}
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
// Configure the cell.
return cell;
}
- (IBAction)delete_btn:(id)sender
{
UIButton *buttontag = (UIButton *)sender;
//NSLog(@"%d",buttontag.tag);
Delete_row = buttontag.tag;
UIAlertView *Alert = [[UIAlertView alloc]initWithTitle:@"Delete Reservation" message:@"Are you sure to want Delete Reservation ??" delegate:self cancelButtonTitle:@"Delete" otherButtonTitles:@"Cancel",nil];
Alert.tag=1;
[Alert show];
[Alert release];
}
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if(alertView.tag==1)
{
if(buttonIndex == 0)
{
// delete row
}
}
}
答案 2 :(得分:-1)
这不是你的问题的答案,而是关于功能的建议(我还不能留下评论,但我仍然愿意提供我的两分钱)。
从UI / UX的角度来看,覆盖默认或“预期”功能并不是一个好主意。用户对各种应用程序和功能的工作方式有一定的期望,当他们不以这种方式工作时,用户会感到沮丧或困惑。因此,几乎每个涉及表格视图的应用程序中的拉动刷新功能都在激增。更有意义的是将双指滑动作为自定义功能。您的应用程序不仅符合传统的UX准则(事实上,我认为Apple可能会拒绝您的应用程序,这可能就是为什么您很难找到答案),但这会涉及很多减少斗争/自定义代码。
很抱歉这不是你问题的直接答案,但我希望它有所帮助。
答案 3 :(得分:-2)
致电
[self.tableView setEditing:YES animated:YES];
在UITableViewController上,您可以将tableView设置为编辑模式。实际上,您可以使用委托方法向单元格添加手势识别器,以进行该调用。
根据文档of UITableViewCell,您实际上可以设置单个单元格的相同方式。除此之外,您还必须管理标准手势识别器。我想子类化将是你在这种情况下的盟友。
我希望这会有所帮助。