2016-10-14 6 views
0

UITableViewCellのテキストラベルの位置をスワイプで固定する方法。デフォルトはUITableViewCellです。スワイプでUITableViewCellのtextLabelの位置を固定しておく方法は?

スワイプの場合textLabelテキストが画面の左と外側に表示されます。

関連コード:明確な理解のために、以下の

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { 
    // Return YES if you want the specified item to be editable. 

     return YES; 
} 

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { 

     if (editingStyle == UITableViewCellEditingStyleDelete) { 

      //code related to delete row 

     } 

} 

チェック画像:

スワイプ前:スワイプした後

enter image description here

enter image description here

+0

@Ronakこれはデフォルトです。あなたがスワイプした後に目に見えるラベル値を望むならば、スワイプ後にUILabelの位置を変更することは、フレーム 'self.lbl.frame = CGRectMake(100,5,50,10)'をこのように設定することを意味します。 –

+0

setEditingメソッドで、テキストラベルの制約とフレームを調整することができました – Flipper

+0

なぜ質問が無効になる可能性がありますか?@Sharpkits –

答えて

0

、このいずれかを試してください:

#pragma mark- swipeable cell 

    -(NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath 
    { 
      UITableViewCell *cell = (UITableViewCell *)[tableView cellForRowAtIndexPath:indexPath]; 

      cell.textLabel.frame=CGRectMake(30, 2, 50, 10); 

      UITableViewRowAction *unlink_button = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"Delete" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) 
       { 

        [self.accountsTable reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone]; 
        cell.textLabel.frame=CGRectMake(0, 2, 50, 10); 
        [self deleteFunction]; 
       }]; 
      unlink_button.backgroundColor = [UIColor redColor]; //arbitrary color 

      return @[unlink_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
- (void)layoutSubviews 
{ 
    [super layoutSubviews]; 
    CGSize size = self.bounds.size; 
    CGRect frame = CGRectMake(4.0f, 4.0f, size.width, size.height); 
    self.textLabel.frame = frame; 
    self.textLabel.contentMode = UIViewContentModeScaleAspectFit; 
} 

オーバーライドこのメソッド...

0

を私はあなたがスワイプときcontentViewが動くと思うので、これ試してみてください。

- (void)layoutSubviews 
{ 
    [super layoutSubviews]; 
    CGRect frame = CGRectOffset(self.textLabel.frame,0-self.contentView.frame.x,0); 
    self.textLabel.frame = frame; 
} 
+0

デフォルトのセルに 'layoutSubviews'を使うには? –

+0

セルの動作を変更するには、セルをサブクラス化する必要があります –

関連する問題