我试图在我的阵列
的动作中随机显示一个单词我看过Randomize words,但仍然无法让它发挥作用。
我的标签文字为_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
答案 0 :(得分: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];
您也可以将其转换为成员变量(不是属性)。
答案 1 :(得分:0)
方法中声明的变量是该方法的局部变量。要在同一个类中的方法之间共享变量,请将它们设为实例变量,最好将它们设为@property
s。
str
出现未使用的字符串错误,因为它在设置后未使用。
答案 2 :(得分:0)
将对象str分配给您的标签。 [字数]包含数组的计数而不是值。
使str对象成为全局,然后使用该对象将值赋给标签。