2012-04-13 17 views
0

buttonTypeUIButtonTypeCustomの場合、UIButtonのスウィズルをするクラスがあります。 しかし、UITableViewCellAccessoryCheckmarkUITableViewCellAccessoryDisclosureの場合も同様です。何らかの理由で何が起きているのかというと、なんらかの理由でそれらを驚かせて、accessoryTypeの背後にカスタム背景などを追加しています。UIButtonスウィズルが原因でUITableViewCellAccessoryTypeの問題が発生する

私がする必要があるのは、私が揺らぎようとしているUIButtonUITableViewCellAccessoryTypeであるかどうかをチェックすることですが、そのようにする方法はわかりません。

ここには、UIButtonを驚かせるために使用している関数があります。

if ([self isMemberOfClass:[UIButton class]] && self.buttonType == UIButtonTypeCustom) { 

     UIImage *upImage = [theme rectButtonUp], *downImage = [theme rectButtonDown]; 
     UIColor *upColor = [theme rectButtonUpTextColor], *downColor = [theme rectButtonDownTextColor]; 

     /* If the highlighted title is set to _theme_asdf, look for a custom 
     * button image called "asdf" and use that. Clear out this highlighted 
     * title string. */ 

     NSString *hlTitle = [self titleForState:UIControlStateHighlighted]; 
     if ([hlTitle isEqualToString:@"_theme_add"] || [hlTitle isEqualToString:@"Add"]) { 
      upImage = [theme rectButtonUpAdd]; 
      downImage = [theme rectButtonDownAdd]; 
     } else if ([hlTitle isEqualToString:@"_theme_remove"]) { 
      upImage = [theme rectButtonUpRemove]; 
      downImage = [theme rectButtonDownRemove]; 
     } else { 
      upImage = [theme rectButtonUp]; 
      downImage = [theme rectButtonDown]; 
     } 

     [self setTitle:nil forState:UIControlStateHighlighted]; 
     upColor = [theme rectButtonUpTextColor]; 
     downColor = [theme rectButtonDownTextColor]; 

     [self setBackgroundImage:upImage forState:UIControlStateNormal]; 
     [self setBackgroundImage:downImage forState:UIControlStateHighlighted]; 
     [self setBackgroundImage:downImage forState:UIControlStateSelected]; 

     if (upColor) { 
      [self setTitleColor:upColor forState:UIControlStateNormal]; 
      [self setTitleColor:[upColor colorByLighteningTo:0.5f] forState:UIControlStateDisabled]; 
     } 
     if (downColor) { 
      [self setTitleColor:downColor forState:UIControlStateHighlighted]; 
      [self setTitleColor:downColor forState:UIControlStateSelected]; 
     } 
} 

ご協力いただければ幸いです。

+0

UIButtonをサブクラス化して、そのクラスを使用して新しいクラスのみをすっきりさせたい場合は、そのクラスを使用しますか? – lnafziger

答えて

0

私が達成したクイックフィックスは、達成したいことを達成します。

コード: ([自己isMemberOfClass:[UIButtonクラス] & & self.buttonType == UIButtonTypeCustom)場合{

if (![[self titleLabel] text]) { 

    } else { 

     UIImage *upImage = [theme rectButtonUp], *downImage = [theme rectButtonDown]; 
     UIColor *upColor = [theme rectButtonUpTextColor], *downColor = [theme rectButtonDownTextColor]; 

     /* If the highlighted title is set to _theme_asdf, look for a custom 
     * button image called "asdf" and use that. Clear out this highlighted 
     * title string. */ 

     NSString *hlTitle = [self titleForState:UIControlStateHighlighted]; 
     if ([hlTitle isEqualToString:@"_theme_add"] || [hlTitle isEqualToString:@"Add"]) { 
      upImage = [theme rectButtonUpAdd]; 
      downImage = [theme rectButtonDownAdd]; 
     } else if ([hlTitle isEqualToString:@"_theme_remove"]) { 
      upImage = [theme rectButtonUpRemove]; 
      downImage = [theme rectButtonDownRemove]; 
     } else { 
      upImage = [theme rectButtonUp]; 
      downImage = [theme rectButtonDown]; 
     } 

     [self setTitle:nil forState:UIControlStateHighlighted]; 
     upColor = [theme rectButtonUpTextColor]; 
     downColor = [theme rectButtonDownTextColor]; 

     [self setBackgroundImage:upImage forState:UIControlStateNormal]; 
     [self setBackgroundImage:downImage forState:UIControlStateHighlighted]; 
     [self setBackgroundImage:downImage forState:UIControlStateSelected]; 

     if (upColor) { 
      [self setTitleColor:upColor forState:UIControlStateNormal]; 
      [self setTitleColor:[upColor colorByLighteningTo:0.5f] forState:UIControlStateDisabled]; 
     } 
     if (downColor) { 
      [self setTitleColor:downColor forState:UIControlStateHighlighted]; 
      [self setTitleColor:downColor forState:UIControlStateSelected]; 
     } 
    } 
} 

したがって、基本的に、UIButtonsの全てがtexttitleLabelを有するがUITableViewCellAccessoryTypeさんのしていません。したがって、私たちは成功しています。それはハックかもしれませんが、今のところ私は必要なものを完了するのを助けてくれました。

関連する問題