开发者

iPhone:How to change default delete button's frame in UITableViewCell

开发者 https://www.devze.com 2023-04-09 19:00 出处:网络
I have facing problem is that Is there any way to change default frame of delete button in UITableView and one more thing is that delete button is always display in center of cell of UITableViewcell

I have facing problem is that Is there any way to change default frame of delete button in UITableView and one more thing is that delete button is always display in center of cell of UITableViewcell so any way to change frame of delete button.

// Update the data model according to edit actions delete or insert.
- (void)tableView:(UITableView *)aTableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle 
forRowAtIndexPath:(NSIndexPath *)indexPath 
{

    if (editingStyle == UITableViewCellEditingStyleDelete) 
    {
        [appDelegate.cate开发者_如何学Pythongories removeObjectAtIndex:indexPath.row];
        [categoryTableView reloadData];
    } 
}

#pragma mark Row reordering
// Determine whether a given row is eligible for reordering or not.
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
{   
    return YES;
}

// Process the row move. This means updating the data model to correct the item indices.
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath 
      toIndexPath:(NSIndexPath *)toIndexPath 
{
    NSString *item = [[appDelegate.categories objectAtIndex:fromIndexPath.row] retain];
    [appDelegate.categories removeObject:item];
    [appDelegate.categories insertObject:item atIndex:toIndexPath.row];
    [item release];
}

Thanks in advance.


in ios 6.1 i was not able to use the above code. I've seen several answers that suggests subclassing the cell class and providing a custom -willTransitionToState. Changing the subview/buttonview frame does not affectively change it's displayed position.

However if you override the layoutSubviews method it will work. Here is the code:

//below i moved the delete button to the left by 10 points. This is because my custom tableview has lef

- (void)layoutSubviews
{
    [super layoutSubviews];
    for(UIView *subview in self.subviews)
    {
        if([NSStringFromClass([subview class]) isEqualToString:@"UITableViewCellDeleteConfirmationControl"])
        {
            CGPoint o = subview.center;
            subview.center = CGPointMake(o.x - 10, o.y);
        }
    }
}


You can use your own view by setting the cell's editingAccessoryView property. This can have whatever frame you like, though you'll need to supply a gradient if you want it to look like the standard delete button.

In the xib file of your custom cell, add a new button of whatever size you like (as long as it is smaller than the cell!). This button should not be a subview of your cell, but a separate item in the file.

Connect this button to the editingAccessoryView outlet of your cell and it will replace the standard delete button.

0

精彩评论

暂无评论...
验证码 换一张
取 消