好的,所以我选择了这个iOS应用程序开发项目,以便在一边工作,它实现了比我预期的更糟糕的东西。我有一个简单的简单游戏,我在其中提供了一些文本,用户通过选择四个按钮之一来识别它是什么。
现在,我认为这里的pickerview会更容易,但出于设计目的,我将尝试通过按钮以编程方式完成它。所以,让我花点时间告诉你我在哪里。
当用户进入游戏界面时,我传入了两个不同的数组和一个数字。第一个数组包含25个文本项,第二个数组包含25个答案项(就索引而言与第一个数组相对应),然后数字是用户希望播放的轮数,其中25个是最大
一旦视图加载,我就会选择它们所选择的轮数,然后将其发送给返回该数字大小的数组的方法,并使用我用作方法的arc4random() %roundNumber
方法进行洗牌。访问我传入的数组的索引。
这非常有效。我可以从源数组中随机有效地抓取,在我呈现它之后,我从索引数组中删除索引以防止重复,并且生活很好。
问题:按钮。我不知道为什么,但我有一个真正的问题,让按钮随机填充,并包含正确的答案。我遇到的主要问题是我无法弄清楚如何随机为按钮分配值。意思是,按钮有名称,button1,button2,button3和button4。因为我以编程方式设置他们的标题,并且我需要将正确答案的值“硬编码”到按钮中,结果是每次正确的答案按钮都是相同的。
这真的只是归结为纯粹的思维和逻辑,坦率地说,此时我的表现很低。我正在使用一个计数器变量来访问并跟踪索引中哪个点是正确答案,但我无法弄清楚其余的难题。
以下是我的想法......但我并不为此感到骄傲。我刚刚重试了不同的事情,现在我所拥有的一切都是一团糟:
for(int i = 0; i < 4; i++){
//digits is an array of size 4 that is populated and shuffled in a similar manner to above
switch ([[digits objectAtIndex:i] intValue]) {
case 0:
[button1 setTitle:[NSString stringWithFormat:@"%@",[self.refList objectAtIndex:[[arr1 objectAtIndex:i] intValue]]]forState: UIControlStateNormal];
NSLog(@"1 %@", [self.refList objectAtIndex:[[arr1 objectAtIndex:i] intValue]]);
break;
case 1:
[button2 setTitle:[NSString stringWithFormat:@"%@",[self.refList objectAtIndex:[[arr1 objectAtIndex:i] intValue]]]forState: UIControlStateNormal];
NSLog(@"2 %@", [self.refList objectAtIndex:[[arr1 objectAtIndex:i] intValue]]);
break;
case 2:
[button3 setTitle:[NSString stringWithFormat:@"%@",[self.refList objectAtIndex:[[arr1 objectAtIndex:i] intValue]]]forState: UIControlStateNormal];
NSLog(@" %@", [self.refList objectAtIndex:[[arr1 objectAtIndex:i] intValue]]);
break;
case 3:
//note this is where I hard code the correct value
[button4 setTitle:[self.refList objectAtIndex:counter] forState: UIControlStateNormal];
NSLog(@"4 %@", [self.refList objectAtIndex:[[arr1 objectAtIndex:i] intValue]]);
break;
default:
break;
}
}
我非常感谢你们的任何帮助,我期待着揭开这个神秘面纱。
谢谢!
答案 0 :(得分:4)
步骤1 - 创建四个按钮,适当设置框架和背景颜色。在四个按钮0,1,2,3上设置标签。将所有按钮设置为一个动作以进行内部修饰。
步骤2 - 生成0到3之间的随机数。使用该值作为数组的索引,选择一个按钮来保存正确的答案。将正确答案设置为标题。在其余按钮上设置错误答案。 (您可以使用NSSet的setWithArray将所有按钮作为一个集合 - 从集合中删除所选按钮后,使用allObjects获取剩余按钮的数组)
第3步 - 按下按钮 - 它的标签是什么?如果它与随机数匹配,则表示您有胜利者。
每个UIView和子类都有一个标记成员。设置标签很简单:
myButton.tag = 0
;
if(unknownButton.tag == randomNumber)
// winner
您可以通过所有按钮触发一个操作方法,以便检查标记。