我目前正在编写一个程序,该程序生成的answer
值介于1和100之间:
int answer = 0;
answer = arc4random() % 100 + 1;
首先让用户猜测屏幕上字段中的值。然后,该脚本将运行一个简单的循环,以确定它们输入的值是否与随机answer
值匹配。
此时,我有一个初始屏幕,询问用户的猜测。他们输入一个数字并单击按钮以提交值。问题是,如果他们没有从第一个条目中猜出answer
值,则会重新生成答案值,并在每次点击按钮时应用到新的随机值。
我的问题是如何在视图开始时生成随机值,然后保持直到用户正确猜到该值。
我的尝试是重新安置:
int answer = 0;
answer = arc4random() % 100 + 1;
到页面的开头,但是当我稍后在页面上调用该方法时,我会收到错误,指出answer
缺少标识符。感谢您的帮助,非常感谢。
答案 0 :(得分:0)
我认为问题是因为您将随机生成片段放入IBAction中,正如您在评论中所述:
这是采用字段
中提交的值的方法
这意味着每次用户点击按钮时都会触发guessNow:sender内的代码,这意味着每次用户提交一个没有意义的猜测时都会生成一个随机数。
//this is the method which takes the value submitted in the field and changes the label display after the user clicks the guess now button
- (IBAction)guessNow:(id)sender {
//set the random siri guess value between 1 and 100
int answer = 0;
answer = arc4random() % 100 + 1;
self.usersGuess = self.guessNumberField.text;
你应该将该代码块放在viewDidLoad()中,并将属性_answer添加到.h
这是一个快速的解决方案,我没有在XCode上写这个,所以可能有语法错误
在.h中,添加
@property (strong) int _answer;
在.m中,将其从guessNow:sender
中删除int answer = 0;
answer = arc4random() % 100 + 1;
并将其添加到viewDidLoad()
answer = arc4random() % 100 + 1;
另外你可能想要添加另一个按钮来重置随机数,所以我想在你的.m中将随机数生成与这样的私有方法隔离开来
- (void)generateRandomNumber
{
self.answer = arc4random() % 100 + 1;
}
这样,您可以在viewDidLoad()中使用此方法生成初始随机数并将其用于重置按钮(如果有)
希望它有所帮助。