Ios 更改应用程序其余部分的按钮图像

Ios 更改应用程序其余部分的按钮图像,ios,uibutton,uiimage,Ios,Uibutton,Uiimage,我正在尝试构建一个与Twitter集成的应用程序。当用户单击共享按钮时,此按钮应更改其图像。这已经起作用了,但是当用户在其他视图中单击,最后用共享按钮再次单击视图时,图像又是旧的。我不知道如何解决这个问题,所以我可以帮助您给我一些建议:) 代码如下: 在my.h文件中: - (IBAction)postToTwitter:(id)sender; @property (weak, nonatomic) IBOutlet UIButton *tweetBTN; …并在我的.m文件中: - (voi

我正在尝试构建一个与Twitter集成的应用程序。当用户单击共享按钮时,此按钮应更改其图像。这已经起作用了,但是当用户在其他视图中单击,最后用共享按钮再次单击视图时,图像又是旧的。我不知道如何解决这个问题,所以我可以帮助您给我一些建议:)
代码如下:

在my.h文件中:

- (IBAction)postToTwitter:(id)sender;
@property (weak, nonatomic) IBOutlet UIButton *tweetBTN;
…并在我的.m文件中:

- (void)viewDidLoad
{
//some code here
   if ([[UIImage imageNamed:@"twitter02_dark.png"] isEqual:_tweetBTN.currentImage]) {
       UIImage *twitterImage2 = [UIImage imageNamed:@"twitter02_active.png"];
       [_tweetBTN setImage:twitterImage2 forState:UIControlStateNormal];
   }
   else {
       UIImage *twitterImage1 = [UIImage imageNamed:@"twitter02_active.png"];
       [_tweetBTN setImage:twitterImage1 forState:UIControlStateNormal];
   }

}





  - (IBAction)postToTwitter:(id)sender {       
        if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])
        {
            SLComposeViewController *tweetSheet = [SLComposeViewController          
composeViewControllerForServiceType:SLServiceTypeTwitter];
            //some code here
            UIImage *twitterImage2 = [UIImage imageNamed:@"twitter02_dark.png"];
            [_tweetBTN setImage:twitterImage2 forState:UIControlStateNormal];
        }
    }
如果有人能帮我,那就太好了

更新: 我在回答中做了类似的修改…但我没有得到一件事:在首次启动应用程序后,图像应该是活动的(因为它是t“推特的”)


…但图像是暗的…为什么?之后,如果此方法正常工作……对我来说非常奇怪

您可以尝试使用用户默认值来存储按钮已按下的事实

在您的PostToWitter方法中:

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"tweeted"];
去掉viewDidLoad中的语句,并将其放在ViewDidDisplay中:

if ([[NSUserDefaults standardUserDefaults] boolForKey:@"tweeted"]) {
   UIImage *twitterImage = [UIImage imageNamed:@"twitter02_dark.png"];
   [_tweetBTN setImage:twitterImage forState:UIControlStateNormal];
}
else {
   UIImage *twitterImage = [UIImage imageNamed:@"twitter02_active.png"];
   [_tweetBTN setImage:twitterImage forState:UIControlStateNormal];
}

这将在应用程序启动之间持续,因此如果您退出应用程序,然后返回,按钮仍将变暗

您不想在视图中使用图像并尝试比较相等吗?这将是另一种选择,但我不知道如何编程。现在它终于可以工作了…不知道为什么…但我很高兴;)嗯…这只在我在选项卡栏中的选项卡之间切换时起作用…但是在单击其他视图后,图像还是旧的图像不知道你的意思。。。当然,您仍然需要使用postToTwitter方法更新图像。。(就像你以前一样)啊,我明白了-在这种情况下要做的另一件事是将viewDidLoad中的代码移到ViewWill中。这样,它将在每次视图出现时进行设置,而不仅仅是在应用程序首次加载时。您是否希望它在离开视图后返回“活动”图像?你能更清楚地解释一下问题是什么吗?好的:首先图像是活动的,点击后图像变暗了…当你回来时,图像仍然应该是暗的…但它不再是静止的,而是再次活动的
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"tweeted"]) {
   UIImage *twitterImage = [UIImage imageNamed:@"twitter02_dark.png"];
   [_tweetBTN setImage:twitterImage forState:UIControlStateNormal];
}
else {
   UIImage *twitterImage = [UIImage imageNamed:@"twitter02_active.png"];
   [_tweetBTN setImage:twitterImage forState:UIControlStateNormal];
}