自定义UITableViewCell 的delete按钮
自定义UITableViewCell上的delete按钮
滑动列表行(UITableViewCell)出现删除按钮时,默认是英文“delete”,这份代码片段能够将“delete”变成中文”删除“,甚至可以自定义删除按钮的形状。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
//通过UITableViewDelegate方法可以实现删除 tableview中某一行 //滑动删除 -( void )tableView:( UITableView *)tableView commitEditingStyle :(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath :( NSIndexPath *)indexPath { NSUInteger row = [indexPath row ]; [bookInforemoveObjectAtIndex:row]; //bookInfo为当前table中显示的array [tableView deleteRowsAtIndexPaths :[NSArrayarrayWithObject:indexPath]withRowAnimation:UITableViewRowAnimationLeft]; } /*此时删除按钮为Delete,如果想显示为“删除” 中文的话,则需要实现 UITableViewDelegate中的- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath方法*/ - ( NSString *)tableView:( UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath :( NSIndexPath *)indexPath{ return @"删除" ; } //或者,最简单的方式,将plist中的Localization native development region改为China即可 //这只是让默认的Delete按钮显示成了中文的删除按钮而已,如果想将这个删除按钮换成其他图片形式的,怎么办呢? -( UITableViewCell *)tableView:( UITableView *)tableView cellForRowAtIndexPath :( NSIndexPath *)indexPath { static NSString * RootViewControllerCell = @"RootViewControllerCell" ; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier :RootViewControllerCell]; if (cell == nil ) { cell = [[[ UITableViewCell alloc ] initWithFrame : CGRectZero reuseIdentifier :RootViewControllerCell]autorelease]; UIButton *button = [ UIButton buttonWithType :UIButtonTypeCustom]; [button setBackgroundImage :[ UIImage imageNamed : @"delete.png" ] forState :UIControlStateNormal]; [button setFrame :CGRectMake( 2 8 0 , 1 0 , 3 0 , 3 0 )]; [button addTarget : self action : @selector (del:) forControlEvents :UIControlEventTouchUpInside]; [cell .contentView addSubview :button]; } cell .textLabel .text = [array objectAtIndex :[indexPath row ]]; cell .tag = [indexPath row ]; NSArray *subviews = [cell .contentView subviews ]; for ( id view in subviews) { if ([view isKindOfClass :[ UIButton class ]]) { [view setTag :[indexPath row ]]; [cell .contentView bringSubviewToFront :view]; } } return cell; } -( void )del:( UIButton *)button { NSArray *visiblecells = [ self .table visibleCells ]; for ( UITableViewCell *cell in visiblecells) { if (cell .tag == button .tag ) { [array removeObjectAtIndex :[cell tag ]]; [table reloadData ]; break; } } } |