【问题标题】:Objective C : UIButton image with NSArray in a random order目标C:以随机顺序使用NSArray的UIButton图像
【发布时间】:2012-03-21 04:36:11
【问题描述】:

关于流程的简要想法:

我在我的数据库中说最少 1 条和最多 18 条记录,其中包含一个文本和一个图像,我必须从中获取图像并将任何 3 个相同的随机放置到 3 个 UIButtons 中,其中一个图像应该与我的问题匹配.即 1 是答案,其他 2 是干扰因素。

例如: 问题是:苹果在哪里?现在在一堆图像中,我想以随机顺序将任意 3 个图像放在 3 个 UIButtons(1 个答案,即一个 Apple 和 2 个干扰项)上,并且在选择 UIButton 时它应该提示我它是否是正确的答案。

我正在实现以下代码以随机排列 UIImage:

-(void) placeImages 
{
    NSMutableArray *images = [NSMutableArray arrayWithArray:arrImg];

    NSArray *buttons = [NSArray arrayWithObjects:btn1,btn2,btn3, nil];
    for (UIButton *btn in buttons)
    {
        int randomIndex= random() % images.count;
        UIImage *img = [images objectAtIndex:randomIndex];
        [btn setImage:img forState:UIControlStateNormal];
        [images removeObjectAtIndex:randomIndex];                        
    }
}

但我被困在一个点上,我应该如何获得 1 个带有答案的 UIButton 图像以及其他作为干扰因素的图像,我应该如何维护来自 NSArray 的图像索引?请指导我。谢谢。

【问题讨论】:

  • 您需要一些方法来确定哪个索引是 Apple....
  • 这就是我所坚持的。我无法找到一种方法来确定相同的..!!
  • 好吧,如果它是一个图像数组,你不能从那里得到它。您需要在创建数组时存储数据,无论是从文件名还是从您创建的从文件映射到名称的表中。然后您可以查找名称并找到您需要的索引号。

标签: objective-c sqlite uibutton uiimage nsmutablearray


【解决方案1】:

将您的第一个按钮设置为 Apple(正确答案) 将剩余的按钮设置为随机错误答案,然后在您的应用中随机放置按钮

【讨论】:

  • 同一件事..!!谢谢哥们,但那行不通..!!因为我非常关心索引。
  • +1 实际上,这应该可以正常工作。在您的代码中,您通常使用指针或按钮的 tag 属性来识别按钮,并且这些都不受按钮在包含视图中的位置的影响。因此,重新定位按钮是一种选择。但是,我认为将按钮留在原处并记住哪个是正确的会少一些麻烦。
  • @amleszk:感谢您的指导。
【解决方案2】:

把它分解成更简单的问题:

  1. 从集合中选择三张图片,一张是答案,另外两张不相同,不是答案。

  2. 以某种随机顺序将图像分配给按钮。

  3. 记住哪个按钮对应正确答案。

因此,假设整个图像集被赋予唯一标识符 0..n-1。您知道哪个图像是给定问题的答案,因此将其 ID 添加到数组中。随机选择另外两个 ID 并将它们添加到数组中,检查以确保数组中都没有。将正确答案的 ID 存储在实例变量中。这可以解决问题 #1。

现在,随机排列数组。 questions here on SO that cover that有很多,这里就不解释了。将数组中的第一个 ID 分配给第一个按钮的tag 属性;将该按钮的图像设置为该 ID 的图像。同样,使用数组中的第二个 ID 及其图像设置第二个按钮,然后再次设置第三个按钮。确保所有三个按钮都具有相同的目标和操作。问题 #2 已解决。

在按钮的操作方法中,获取被点击按钮的tag(这是操作的sender参数)。将标签与您之前存储在实例变量中的正确答案的 ID 进行比较。如果它们匹配,则用户是正确的。问题 #3 已解决。

【讨论】:

  • 谢谢。让我试着回到你身边..!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-21
  • 2020-08-20
  • 1970-01-01
  • 1970-01-01
  • 2011-06-18
  • 2013-02-04
  • 1970-01-01
相关资源
最近更新 更多