是否可以以编程方式在UITableViewCell上显示红色删除按钮?

时间:2011-03-14 16:53:55

标签: iphone uitableview uigesturerecognizer

这里有很多类似的问题,但我认为没有一个问题特别提出这个问题,也就是说,代码中是否有任何方法强制红色删除按钮出现在UITableView行的右侧? / p>

我问的原因是我正在尝试使用两个UISwipeGestureRecognizer来改变tableview的行为,以便:

  • 单指滑动会调用自定义操作(而不是显示红色删除按钮,这就是它现在的行为方式),

  • 双指滑动调用默认的单指滑动行为,即显示红色删除按钮。

我已经浏览了SDK文档,但我找不到任何导致红色按钮出现的方法,这让我觉得如果不从头开始手动创建红色删除按钮,上面提出的UI方案就无法实现试图让它模仿内置的行为。

非常感谢任何帮助。

4 个答案:

答案 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,您实际上可以设置单个单元格的相同方式。除此之外,您还必须管理标准手势识别器。我想子类化将是你在这种情况下的盟友。

我希望这会有所帮助。