2017-11-01 11 views
1

私はXcode 9のバージョンを使用しています。現在、私はセルでテーブルビューを実装しています。セルをスワイプすると、削除ボタンが表示されている必要があります。それは今働いている。しかし、私はテキストからアイコンに削除を変更したい。私がこれまで行ってきたことは次のとおりです:セルスワイプはiOSのアイコンにテキストを削除します

- (void)willTransitionToState:(UITableViewCellStateMask)state 
{ 
    [super willTransitionToState:state]; 

    if ((state & UITableViewCellStateShowingDeleteConfirmationMask) == UITableViewCellStateShowingDeleteConfirmationMask) 
    { 
     for (UIView *subview in self.subviews) 
     {  

     if ([NSStringFromClass([subview class]) isEqualToString:@"UITableViewCellDeleteConfirmationControl"]) 
     { 
      UIImageView *deleteBtn = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 64, 33)]; 
      [deleteBtn setImage:[UIImage imageNamed:@"delete_icon.png"]]; 
      [[subview.subviews objectAtIndex:0] addSubview:deleteBtn]; 
     } 
     } 
    } 
} 

しかし、上記のコードは機能しません。おそらくそれは以前のXcodeバージョンでは動作していますが、最新ではありません。これを修正する方法はありますか?

+0

を。テキストを変更するデリゲートメソッドがあります。プライベートサブビュー構造を掘り起こそうとする試みは単なる無駄遣いです。その構造は、iOSアップデートで変更することができます(これはXcodeとは関係ありません)。 – rmaddy

+0

oh my lordt、このようなサブビューを探したり編集したりしないでください。これらの多くは私的であると考えられており、これはあるiOSバージョンの次の – gadu

+0

@rmaddyの問題を非常に簡単に引き起こします。デリゲートメソッドは、テキストをアイコンに変更することはできますか? – qazzu

答えて

0

私はこれが機能するかどうかを知っているが、あなたのような何かを試すことができthisポストをオフに構築していない:アイコンにテキストを変更するパブリックAPIはありません

-(NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath { 
UITableViewRowAction *button = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) 
    { 
     NSLog(@"Action to perform with Button 1"); 
    }]; 
    button.backgroundColor = [UIColor redColor]; // red to keep it the same, or whatever you want 
    [button setImage:[UIImage imageNamed:@"delete_icon.png"]]; 

    return @[button]; 
} 

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { 
// you need to implement this method too or nothing will work: 

} 
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath 
    { 
     return YES; 
    } 
+0

例を提供してくれてありがとう。試してみる。 – qazzu

+0

こんにちは。私はそれを試して、 'setImage'は動作していません。私はまだ解決している – qazzu

関連する問題