我面临的问题是有没有办法改变默认框架
UITableView
中删除按钮的另一个原因是删除按钮始终显示在UITableViewcell
的单元格中心,因此可以更改删除按钮的框架。
// 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.categories 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];
}
提前致谢。
答案 0 :(得分:3)
willTransitionToState
。更改子视图/按钮视图框不会有效地改变它的显示位置。
但是,如果您覆盖layoutSubviews
方法,它将起作用。这是代码:
//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);
}
}
}
答案 1 :(得分:0)
您可以通过设置单元格的editingAccessoryView
属性来使用自己的视图。这可以包含您喜欢的任何帧,但如果您希望它看起来像标准删除按钮,则需要提供渐变。
在自定义单元格的xib
文件中,添加一个任意大小的新按钮(只要它小于单元格!)。此按钮不应是单元格的子视图,而是文件中的单独项目。
将此按钮连接到单元格的editingAccessoryView
插座,它将替换标准删除按钮。