1

設定にプッシュするボタンがありますviewController。その設定viewControllerでは、元のビューのすべての色を反転するスイッチがあります。これは、プログラムで行った反転です。元の画像を置き換えるために反転ボタン画像を作成しました。

元のビューに戻るとviewWillAppear、スイッチが反転した場合に反転するメソッドを呼び出しました。2 つの無効なボタンを除いて、すべてがそれに応じて変更されます。

スイッチ値はデフォルト設定で保存されるため、ユーザーはアプリを終了して後で戻ってきても、色を反転したままにすることができます。invert メソッドをviewDidLoad呼び出すと、ボタンは問題なく変化し、無効になっていることを示すように調整されて表示されます。

何が起こっているのでしょうか?

-(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];
}
4

4 に答える 4

2

問題は、画像が自動的に更新されないことです。機能enabledさせるには、値をリセットする必要があります。

[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;
于 2014-05-12T13:02:42.820 に答える
0

助けてくれてありがとう。A-Liveの回答に触発されて、私が思いついた回答は次のとおりです。

最初にボタンを有効に設定し、次に画像を設定してから、同じメソッド内でボタンを再度無効にする必要がありました。これで問題は解決しました。

[self.playButton setEnabled:YES];
[self.playButton setImage:[UIImage imageNamed:@"playinverted"]forState:UIControlStateNormal];
[self.playButton setEnabled:NO];
于 2014-05-12T14:06:29.490 に答える