【发布时间】:2012-04-17 14:50:15
【问题描述】:
我需要 2 个不同的图像来突出显示 UIButton 的状态。
我有这几行代码:
- (IBAction)buttonPressed:(id)sender
{
UIImage *followImageHighlighted = [UIImage imageNamed:@"follow-hilite.png"];
UIImage *unfollowImageHighlighted = [UIImage imageNamed:@"unfollow-hilite.png"];
if ([sender isSelected]) {
// set this image for the next time the button will pressed
[sender setImage:unfollowImageHighlighted forState:UIControlStateHighlighted];
} else {
// set this image for the next time the button will pressed
[sender setImage:followImageHighlighted forState:UIControlStateHighlighted];
}
}
- (void)viewDidLoad
{
// ...
UIImage *followImage = [UIImage imageNamed:@"follow.png"];
UIImage *unfollowImage = [UIImage imageNamed:@"unfollow.png"];
[self.followButton setImage:followImage forState:UIControlStateNormal];
[self.followButton setImage:unfollowImage forState:UIControlStateSelected];
}
问题是每次我按下按钮时,我都会看到突出显示的图像follow-hilite.png。
我不能更改道路上按钮的突出显示图像吗?
我认为这是一个不好的限制,因为当按钮被选中(因此,“关注”)并且用户按下它时,他会看到默认图像,然后当它触摸图像时,图像是选定状态的图像,当网络操作完成后按钮图像正确切换到选中的那个。
想法?
编辑
- (IBAction)followButtonTapped:(id)sender
{
BOOL isFollowed = [sender isSelected];
NSString *urlString = isFollowed ? kUnfollowURL : kFollowURL;
// operation [...]
[self.followButton setSelected:(isFollowed) ? NO : YES];
self.user.followed = !isFollowed;
}
我更好地解释了这个问题:
- 默认状态下的按钮:白底黑字
- 按钮处于选中状态:黑底白字
如果没有关注目标用户,则按钮处于默认状态,如果我尝试按下它,我会看到正确的突出显示图像。
但是如果目标用户被关注并且按钮处于选中状态,如果我尝试按下它(并按住手指),我会看到白色背景上带有黑色文本的按钮。这很丑陋,这是我的问题。
【问题讨论】:
-
我不知道
[sender isSelected]是什么,但它只返回是。 -
这是什么意思:“如果目标用户被关注”?
-
如果视图显示的用户被我关注。
-
太好了。这就是我正在寻找的应用程序条件。将在几分钟内编辑我的答案。
-
@danh 我已经解决了,检查我的答案。还是谢谢你!
标签: iphone objective-c cocoa-touch uibutton