iphone - 在 UIBarButtonItem 中切换自定义图像

标签 iphone objective-c sdk uibarbuttonitem

在过去的两天里,我一直在绞尽脑汁地寻找并尝试一些我自己的解决方案。我通过 IB 放置了一个 UIBarButtonItem,并在顶部栏中放置了一个图像,作为静音/取消静音按钮。除了图像不变之外,一切正常。我使用了以下代码,它可以编译但没有变化

if( mute == YES ) {
    UIImage *unmuteImage = [UIImage imageNamed:@"audio-on.png"];
    [self.muteButton setImage:unmuteImage];
    [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"muteKey"];
}
else {
    UIImage *muteImage = [UIImage imageNamed:@"audio-off.png"];
    [self.muteButton setImage:muteImage];
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"muteKey"];
}

最佳答案

我终于弄清楚了......只花了几天时间,但我太忙了,没有时间发布解决方案。我终于有时间了,很高兴发布我的解决方案。我有预感,除非 100% 以编程方式完成,否则这是行不通的,我是对的。这是我的问题的最终解决方案:

if(mute == YES)
{
    UIImage *image = [UIImage imageNamed:@"audio-off.png"];
    UIButton *myMuteButton = [UIButton buttonWithType:UIButtonTypeCustom];
    myMuteButton.bounds = CGRectMake( 0, 0, image.size.width, image.size.height );    
    [myMuteButton setImage:image forState:UIControlStateNormal];
    [myMuteButton addTarget:self action:@selector(mute) forControlEvents:UIControlEventTouchUpInside];    
    UIBarButtonItem *myMuteBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:myMuteButton];   
    navBar.leftBarButtonItem = myMuteBarButtonItem;
    [myMuteBarButtonItem release];
}
else
{
    UIImage *image = [UIImage imageNamed:@"audio-on.png"];
    UIButton *myUnmuteButton = [UIButton buttonWithType:UIButtonTypeCustom];
    myUnmuteButton.bounds = CGRectMake( 0, 0, image.size.width, image.size.height );    
    [myUnmuteButton setImage:image forState:UIControlStateNormal];
    [myUnmuteButton addTarget:self action:@selector(mute) forControlEvents:UIControlEventTouchUpInside];    
    UIBarButtonItem *myUnmuteBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:myUnmuteButton];
    navBar.leftBarButtonItem = myUnmuteBarButtonItem;
    [myUnmuteBarButtonItem release];
}

好消息是我终于完成了我的应用程序并将其提交到应用程序商店。希望一切顺利,我很期待!

关于iphone - 在 UIBarButtonItem 中切换自定义图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3117971/

相关文章:

android - Appcelerator Titanium - SDK 设置检测到的问题

iphone - 更新数据并在 UITableView iOS 上显示

iphone - 如何在后台线程上定期从服务器轮询数据?

iphone - 实时应用程序中的核心数据更新

objective-c - 对于 Objective-C 中用于访问 NSMutable 字典的每个循环

javascript - HTML/JavaScript - 从我的网站在 facebook 墙上发布消息

ios - 将歌曲作为 mp3 从 ipod 音乐库导入应用程序

ios - NSCoding 和 NSData 是什么关系?

ios - 当用户明确终止应用程序时,有没有办法调用函数?

iphone - iOS:删除由NSArray创建的UIImageView实例?