ios - 禁用按钮不更改图像

标签 ios objective-c uibutton viewwillappear uicontrolstate

我有一个按钮可以推到设置 viewController .在那个设置viewController我有一个开关可以反转原始 View 上的所有颜色,这是我以编程方式完成的反转。我制作了倒置按钮图像来替换原始图像。

当我返回原始 View 时,我有 viewWillAppear如果开关已翻转,则调用该方法进行反转。除了两个禁用的按钮外,一切都会相应地发生变化。

开关值保存在默认设置下,以便用户可以退出应用程序并稍后返回,但颜色仍会反转。当viewDidLoad调用 invert 方法,按钮改变得很好,它们甚至显示调整以显示它们被禁用。

知道会发生什么吗?

-(void)invert{

self.view.backgroundColor = [UIColor blackColor];

//Buttons
[self.stopButton setImage:[UIImage imageNamed:@"stopinverted"]
                 forState:UIControlStateNormal];
[self.playButton setImage:[UIImage imageNamed:@"playinverted"]
                 forState:UIControlStateNormal];
}

-(void)viewWillAppear:(BOOL)animated{

    _inverted = 
      [[NSUserDefaults standardUserDefaults] boolForKey:@"isInvertedOn"];
    [[NSUserDefaults standardUserDefaults] synchronize];

    if(_inverted){
        [self invert];
    } else {
        [self unInvert];
    }
    [super viewWillAppear:(BOOL)animated];
}

最佳答案

问题似乎是图像没有自动更新,您需要重置 enabled使其工作的值(value):

[self.stopButton setImage:[UIImage imageNamed:@"stopinverted"]
                 forState:UIControlStateNormal];
self.stopButton.enabled = ! self.stopButton.enabled;
self.stopButton.enabled = ! self.stopButton.enabled;

[self.playButton setImage:[UIImage imageNamed:@"playinverted"]
                 forState:UIControlStateNormal];
self.playButton.enabled = ! self.playButton.enabled;
self.playButton.enabled = ! self.playButton.enabled;

关于ios - 禁用按钮不更改图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23609065/

相关文章:

ios - UIButtons 未显示在 UIScrollView 中

swift - 为什么 Swift 3 无法识别我的按钮点击?

ios - Swift Realm Write方法是Sync或Async Thread

ios - 根据 Apple 的 Provisioning 文档,什么是团队分销商?

ios - 有什么方法可以检查 SKSpriteNode 是否已从父级中删除?

iphone - ASIhttprequest 将响应转换为 NSString

ios - 编辑它的属性后将 nsobject 自定义类复制到数组

Swift:无法以编程方式设置 UIButton 图像,出现错误: 'NSString' 不是 'UIImage' 的子类型

ios - 未找到架构 ARM64 clang 的符号 - 错误 : linker command failed with exit code 1 (use -v to see invocation)

ios - 圆形到矩形变换动画