Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios setTitle和setBackgroundImage不适用于UIView中嵌套的UIButton_Ios_Objective C_Uiview_Uibutton - Fatal编程技术网

Ios setTitle和setBackgroundImage不适用于UIView中嵌套的UIButton

Ios setTitle和setBackgroundImage不适用于UIView中嵌套的UIButton,ios,objective-c,uiview,uibutton,Ios,Objective C,Uiview,Uibutton,我有一些这样的代码: - (void)updateUI { for (UIButton *cardButton in self.oneDimensionalArrayContainingCardButtons) { int cardButtonIndex = [self.oneDimensionalArrayContainingCardButtons indexOfObject:cardButton]; Card *card = [self.game c

我有一些这样的代码:

- (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:

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

当我点击下面的a卡时,我会将点击的卡设置为选中并更新UI。通过查看日志,我可以看到内容被设置为注销为
ret
,这意味着我正在将一个非空NSString传递到
cardButton setTitle

问题是,背景图像没有改变,标题似乎没有设置

cardButton.enabled
属性似乎已按预期设置


知道会发生什么吗?

什么是“卡”?它是从UIButton扩展而来的自定义按钮吗?在这种情况下,问题可能在于卡片,而不是传递给它的字符串。

设置标题颜色或将背景色红色/橙色添加到cardButton.titelLabel,以便您知道按钮的标题表是否隐藏在某处。如果它没有显示标题标签,那么您应该检查标题标签的框架。

卡是一个模型类,扩展了NSObject