2011-07-28 6 views

答えて

15

のためのフレームを変更してみてください自分の削除ボタン(これらのメソッドでsuperを呼び出さないでください)。 -(void)willTransitionToState:を使用してeditingAccessoryViewの枠の設定について

@implementation CustomCell 
- (void)layoutSubviews { 
     [super layoutSubviews]; 
     if (self.showingDeleteConfirmation) { 
      if ([self.subviews count] < 4) return; 
      UIView *delBtn = [self.subviews objectAtIndex:3]; 
      delBtn.frame = CGRectOffset(delBtn.frame, 0, 10); 
     } 
} 
@end 
+8

'[self.subviews objectAtIndex:3]'は遅かれ早かれ打ち切られます。状態の処理を上書きし、カスタムの削除ボタンを描画する方がはるかに良いアイデアです。 –

+0

うん、配列を使うならば、インデックスごとにアイテムにアクセスする前に毎回その境界をチェックすべきです。 – UIBuilder

+0

これは本当に私の問題を解決しました。しかし、私は質問があります。削除ボタンが表示されると、元の位置からちょうど奇妙に見える新しい位置に移動しているように見えます。どのようにして、削除ボタンを原点を設定したのと同じ位置から表示させることができますか? – Nitish

-2

あなたはこの問題を解決するための強力な真の方法を探しているなら、あなたはUITableViewCellのサブクラスと正しい描画のためのすべての状態の処理メソッドをオーバーライドする必要がありますアクセサリビュー

+1

少し拡大できますか?私didTransitionToStateを使用して探していた:私のUITableViewCellサブクラスで、私は運がないアクセサリービューフレームを設定しています。 – fuzzygoat

0

代わりのdidTransitionToState:

方法:しかし、もう一つの簡単な方法はありますか?

- (void)willTransitionToState:(UITableViewCellStateMask)state 
{ 
    if (state == UITableViewCellEditingStyleDelete) 
    { 

     NSInteger num = 10; 

     UIView.frame = CGRectMake(UIView.frame.origin.x,UIView.frame.origin.y - num, 
     UIView.size.width,UIView.size.height); 
    } 
} 
関連する問題