setTitle 和 setBackgroundImage 不适用于嵌套在 UIView 中的 UIButton
Posted
技术标签:
【中文标题】setTitle 和 setBackgroundImage 不适用于嵌套在 UIView 中的 UIButton【英文标题】:setTitle and setBackgroundImage not working for UIButton nested within UIView 【发布时间】:2015-05-24 15:52:15 【问题描述】:我有一些这样的代码:
- (void)updateUI
for (UIButton *cardButton in self.oneDimensionalArrayContainingCardButtons)
int cardButtonIndex = [self.oneDimensionalArrayContainingCardButtons indexOfObject:cardButton];
Card *card = [self.game cardAtIndex:cardButtonIndex];
[cardButton setTitle:[self titleForCard:card] forState:UIControlStateNormal];
[cardButton setBackgroundImage:[self backgroundImageForCard:card] forState:UIControlStateNormal];
cardButton.enabled = !card.isMatched;
self.scoreLabel.text = [NSString stringWithFormat:@"Score: %d", self.game.score];
- (NSString *)titleForCard:(Card *)card
NSString *ret = card.isChosen ? card.contents : @"";
NSLog(ret);
return ret;
- (UIImage *)backgroundImageForCard:(Card *)card
return [UIImage imageNamed:card.isChosen ? @"cardback" : @"cardfront"];
以及如下所示的用户界面:
当我点击下面的卡片时,我会将点击的卡片设置为选中并更新 UI。通过查看日志,我可以看到内容被设置为注销为ret
,这意味着我将一个非空的 NSString 传递给cardButton setTitle
。
问题是,背景图像没有改变,标题似乎也没有设置。
cardButton.enabled
属性似乎按预期设置。
知道会发生什么吗?
【问题讨论】:
【参考方案1】:什么是“卡”?它是从 UIButton 扩展的自定义按钮吗?在这种情况下,问题可能出在 Card 而不是您传递给它的字符串。
【讨论】:
Card 是一个模型类,扩展了 NSObject【参考方案2】:SetTitleColor 或将 backgroundColor Red/Orange 添加到 cardButton.titelLabel 以便您知道 Button 的 titleLable 是否隐藏在某个地方。如果它没有显示 titleLabel 那么你应该检查 titleLable 的框架。
【讨论】:
以上是关于setTitle 和 setBackgroundImage 不适用于嵌套在 UIView 中的 UIButton的主要内容,如果未能解决你的问题,请参考以下文章
UIButton -setTitle: forState: 似乎不起作用
为啥我调用 .setTitle 时我的 UIButton Text 没有改变? (迅速)
为啥 Android 中 Toolbar.setTitle 没有效果