-2

配列からのアクションでランダムに選択された単語を表示しようとしています

ランダム化された単語を見ましたが、それでも機能しません。

私のラベルテキストは_answer

私のviewDidLoadで:

NSArray *words = [NSArray arrayWithObjects: @"Blue", @"Green", @"Red", nil ];
NSString *str=[words objectAtIndex:arc4random()%[words count]];

私の行動方法の下で:

 [_answer setText:[NSString stringWithFormat:@"%d", arc4random()%[words count]];

未使用の文字列エラーが発生しますstr

そして、私のアクションメソッドでエラーuse of undeclared identifier "words"が発生しましたが、viewDidLoadにあります

4

3 に答える 3

4

範囲。viewDidLoadメソッドで作成した変数(words、str)は、そのメソッド(つまりスコープ)内でのみ有効です。'action'メソッドなどの別のメソッドでそれらを使用する場合は、クラススコープでメンバー変数/プロパティとして宣言する必要があります。

例として、.hファイルでは次のようになります。

@interface ExampleViewController : UIViewController
    @property(nonatomic) NSString *answer;
    // ... your other stuff ...
@end

.mファイル内:

@synthesize answer;
- (void)viewDidLoad
{
    NSArray *words = [NSArray arrayWithObjects: @"Blue", @"Green", @"Red", nil ];
    self.answer = [words objectAtIndex:arc4random()%[words count]];
    [super viewDidLoad];
}

最後に、まだ.mで、あなたの行動:

[_answer setText:self.answer];

また、(プロパティではなく)メンバー変数としてデカールすることもできます。

于 2013-01-01T20:29:37.147 に答える
0

メソッドで宣言された変数は、そのメソッドに対してローカルです。同じクラスのメソッド間で変数を共有するには、できれば@propertysにすることで、インスタンス変数にします。

設定後に使用されないため、未使用の文字列エラーが発生しますstr

于 2013-01-01T20:31:53.593 に答える
0

オブジェクトstrをラベルに割り当てます。[words count]には、値ではなく配列のカウントが含まれます。

strオブジェクトをグローバルにしてから、そのオブジェクトを使用して値をラベルに割り当てます。

于 2013-01-01T20:32:02.043 に答える