Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7777875
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 1, 20262026-06-01T18:15:14+00:00 2026-06-01T18:15:14+00:00

I have a class that swizzles UIButton ‘s when the buttonType is UIButtonTypeCustom is

  • 0

I have a class that swizzles UIButton‘s when the buttonType is UIButtonTypeCustom is true.
However, this is also true when it comes to UITableViewCellAccessoryCheckmark and UITableViewCellAccessoryDisclosure is used as well. What is happening is that for some reason, it is swizzling them and adding the custom background and so forth behind the accessoryType for some reason.

What I need to do is to check whether or not the UIButton that I’m trying to swizzle is a UITableViewCellAccessoryType but I am unaware of how to do such a thing.

Here’s the innards of the function that I am using to swizzle the 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];
        }  
}

Any help would be greatly appreciated!

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-01T18:15:15+00:00Added an answer on June 1, 2026 at 6:15 pm

    A quick fix that I have done that accomplishes what I wanted to achieve.

    Code:
    if ([self isMemberOfClass:[UIButton class]] && 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];
            }
        }   
    }
    

    So, basically, all of the UIButtons have a titleLabel with text but the UITableViewCellAccessoryType‘s don’t. Therefore, we have success. It may be a hack but for now it has aided me in completing what I need.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a class that I would like to return true when method_exists() etc
I have a class that looks like this : #include <iostream> #include <vector> using
I have class that extends AsyncTask class and I create instance of this class
I have class X that implements an interface IX . I also have a
I have a class that is defined like this: class A { int contractID;
I have class that extends 'IntentService' - this class occasionally receives data from a
I'm new to python, this is a class that I have class Goal: def
I have class (MyCustomWebView) that extend webview can i do something like this ?
I have class A that has some primitive attributes and also member of type
I have a class that looks like this public class TestCase { public IEnumerable<string>

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.