-3

セレクター「setTitle:forState:」を宣言する「NSArray」の可視 @interface はありません

アプリを実行すると、エラーが 1 つだけ見つかり、エラーは No visible @interface for 'NSArray' declares the selector 'setTitle:forState:' です

ここに私のコードがあります

< #import "CardGameViewController.h"
 #import "PlayingCardDeck.h" 

@interface CardGameViewController ()
@property (weak, nonatomic) IBOutlet UILabel *flipslabel;
@property(nonatomic) int flipCount;
@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *cardButtons;
@property (strong, nonatomic) Deck *deck;
@end

@implementation CardGameViewController

-(void)setCardButtons:(NSArray *)cardButtons
{
    _cardButtons = cardButtons;
for (UIButton *cardButton in self.cardButtons){
    Card *card = [self.deck drawRandomCard];
    [cardButtons setTitle:card.contents forState:UIControlStateSelected];
}
}


- (Deck *)deck
{
if(!_deck) _deck=[[PlayingCardDeck alloc] init];
return _deck;    
}



- (void)setFlipCount:(int)flipCount
 {

_flipCount = flipCount;
self.flipslabel.text= [NSString stringWithFormat:@"Flips: %d", self. flipCount];

}


- (IBAction)flipCard:(UIButton *)sender
{

sender.selected=!sender.isSelected;
self.flipCount++;
}

@end

エラーは何だと思いますか??

4

4 に答える 4

2

ループがオフになっているようです。配列内のボタンをループして、ボタンではなく配列のタイトルを設定しようとしています。

for (UIButton *cardButton in self.cardButtons){
    Card *card = [self.deck drawRandomCard];
    [cardButtons setTitle:card.contents forState:UIControlStateSelected];
  // ^^^^^^^^^^^ should be cardButton
}
于 2013-08-11T21:20:13.393 に答える
1

for ループにタイプミスがあります。配列「cardButtons」ではなく、変数「cardButton」をループで参照する必要があります。

では、これから

[cardButtons setTitle:card.contents forState:UIControlStateSelected];

これに:

[cardButton setTitle:card.contents forState:UIControlStateSelected];

これはおそらく、見逃したオートコンプリートのタイプミスです。

于 2013-08-11T21:21:04.720 に答える
0

オリジナル

-(void)setCardButtons:(NSArray *)cardButtons
{
    _cardButtons = cardButtons;
for (UIButton *cardButton in self.cardButtons){
    Card *card = [self.deck drawRandomCard];
    [cardButtons setTitle:card.contents forState:UIControlStateSelected];
    }
}

固定 -メソッドsetTitle:forStateです。配列UIButtonで呼び出していますcardButtons

-(void)setCardButtons:(NSArray *)cardButtons
{
    _cardButtons = cardButtons;
for (UIButton *cardButton in self.cardButtons){
    Card *card = [self.deck drawRandomCard];
    [cardButton setTitle:card.contents forState:UIControlStateSelected];
    }
}
于 2013-08-11T21:21:01.267 に答える
0

[cardButtons setTitle:card.contents forState:UIControlStateSelected];作成した NSArray でメソッドを呼び出しています。

あなたが望むものは:

[cardButton setTitle:card.contents forState:UIControlStateSelected];
于 2013-08-11T21:21:44.030 に答える