Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.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 7作业2-按钮不';t单击“重置”按钮时翻转_Ios_Objective C - Fatal编程技术网

斯坦福IOS 7作业2-按钮不';t单击“重置”按钮时翻转

斯坦福IOS 7作业2-按钮不';t单击“重置”按钮时翻转,ios,objective-c,Ios,Objective C,我对IOS编程还不熟悉。刚刚开始在iTunes上学习斯坦福IOS 7课程。 我正在做第二项作业。我刚刚实现了第2部分。我添加了一个重置按钮,将插座连接到控制器,添加了将游戏设置为零的动作方法,并调用了UIUpdate方法。看来我做的每件事都是对的。我已经调试了代码,我可以看到游戏被重新分配和初始化。我可以看到所有的按钮卡片都有封底和一个空标题的背景。 但在模拟器中,由于某种原因,按钮不会翻转。我相信这是应该发生的,但我不知道为什么 谁能给我解释一下吗 这是我的控制器代码: #import "Ca

我对IOS编程还不熟悉。刚刚开始在iTunes上学习斯坦福IOS 7课程。 我正在做第二项作业。我刚刚实现了第2部分。我添加了一个重置按钮,将插座连接到控制器,添加了将游戏设置为零的动作方法,并调用了UIUpdate方法。看来我做的每件事都是对的。我已经调试了代码,我可以看到游戏被重新分配和初始化。我可以看到所有的按钮卡片都有封底和一个空标题的背景。 但在模拟器中,由于某种原因,按钮不会翻转。我相信这是应该发生的,但我不知道为什么

谁能给我解释一下吗

这是我的控制器代码:

#import "CardGameViewController.h"
#import "PlayingCardDeck.h"
#import "CardMatchingGame.h"

@interface CardGameViewController ()
@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *cardButtons;
@property (strong, nonatomic) CardMatchingGame *game;
@property (weak, nonatomic) IBOutlet UILabel *scoreLable;
@property (weak, nonatomic) IBOutlet UIButton *resetbutton;
@property (weak, nonatomic) IBOutlet UISegmentedControl *segControlNumCardesMatched;
@end

@implementation CardGameViewController



- (CardMatchingGame *)game
{
    if (!_game)
    {
        _game = [[CardMatchingGame alloc] initWithCardCount:[self.cardButtons count]
                                                  usingDeck:self.createDeck];
    }

    return _game;
}

- (Deck *)createDeck
{
    return [[PlayingCardDeck alloc] init];
}


- (IBAction)touchResetButton:(id)sender
{
    [self updateUI];
}

- (IBAction)touchCardButton:(UIButton *)sender
{
    int chosenButtonIndex = [self.cardButtons indexOfObject:sender];
    [self.game chooseCardAtIndex:chosenButtonIndex];
    [self updateUI];
}

- (void)updateUI
{
    for (UIButton *cardButton in self.cardButtons)
    {
        int cardButtonIndex = [self.cardButtons 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.scoreLable.text = [NSString stringWithFormat:@"Score: %d", self.game.score];
    }
}

-(NSString *)titleForCard:(Card *)card
{
    return card.isChosen ? card.contents : @"";
}

- (UIImage *)backgroundImageForCard:(Card *)card
{
    return [UIImage imageNamed:card.isChosen ? @"cardFront" : @"cardBack"];
}

@end

谢谢。

我不确定我是否理解这个问题,因为我不知道项目本身,但是您尝试使用的uicontrol状态可能是错误的?我对此有意见

按照您的操作方式,您只需更改UIControlStateNormal的图像。您可以尝试为其他状态设置默认图像,然后只更改状态,而不必使用函数更改该状态的图像。 因为您正在更改按钮的状态,如果它被禁用,它将不会将图像更改为您想要的图像,因为您只更改UIControlStateNormal的图像

问题还可能是它应该是按钮的图像,而不是其背景图像,因此您必须使用
setImage
,而不是
setBackgroundImage
。这完全取决于项目…

“添加了将游戏设置为零并称为UIUpdate方法的动作方法”。我想你的意思是:

- (IBAction)touchResetButton:(id)sender
{
_game = nil;
[self game];
[self updateUI];
}

这不在上述代码中。如果您包括这一点,那么我看您的控制器实现没有任何问题。

Hi。从视图控制器发布一些代码。这将更容易进行故障排除。您确定问题出在发布的代码中吗?尝试记录您从
card.isChosen
获得的信息。然后,我所说的可能都是错误的,因为我最近也遇到了这个问题:D