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