目标 C - 随机选择 XIB

Posted

技术标签:

【中文标题】目标 C - 随机选择 XIB【英文标题】:Objective C - Random XIB pick 【发布时间】:2011-07-11 03:57:01 【问题描述】:

我已经发布了另一个关于此的问题,但似乎没有人知道如何做到这一点。

我希望我的应用为我选择一个随机的 XIB 文件,但不要使用已经随机选择的那些。

这就是我现在设置的内容,它似乎可以工作,但我必须一遍又一遍地按下按钮,直到找到一个尚未使用的按钮。

-(IBAction)continueAction:(id)sender

random = arc4random() % 2;
if (random == 0 && usedQ2 == 0) 
    Question_2 *Q2 = [[Question_2 alloc] initWithNibName:@"Question 2" bundle:nil];

    Q2.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentModalViewController:Q2 animated:YES];
    [Q2 release];


else if (random == 1 && usedQ3 == 0) 
    Question_3 *Q3 = [[Question_3 alloc] initWithNibName:@"Question 3" bundle:nil];

    Q3.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentModalViewController:Q3 animated:YES];
    [Q3 release];




如您所见,我从一个随机数中选择它,然后从他们中找到它匹配的那个。

然后你可以看到我的 if 语句的另一部分正在检查以确保它以前没有被使用过。

每个 NIB 文件都有自己的 usedQ(无论 Q 是什么),当加载该 Nib 文件时,它会将 usedQ 设为 1。

我认为我可以这样做,但为了摆脱不断按下按钮,我将不得不在其中放入大量 else 语句和更多 else 语句。

我也尝试过运行

random = arc4random() % 2;

在一个while语句和一个for语句中,我希望它会一直寻找一个数字,直到找到一个没有被使用过的数字。

有什么帮助吗?谢谢!

【问题讨论】:

answer you received two days ago 到 your previous question 似乎很好地回答了您的问题。 【参考方案1】: 为什么不创建一个可变数组 并用所有人的名字填充它 你的笔尖。 然后读取数组的计数并 生成一个随机数 范围。 在该索引处提取笔尖名称 并将其从阵列中删除。 重复步骤 2-3。
//Setup your list at an appropriate place 

NSMutableArray *nibs = [[NSMutableArray alloc] initWithObjects: @"One Nib", @"Another Nib", @"最后一个 Nib", nil];

self.unusedNibs = 笔尖; //这应该是您在其中声明的属性 你的标题。

[笔尖释放];

-(IBAction)continueAction:(id)sender

int random = arc4random() % [self.unusedNibs count]; 

NSString *nibName = [self.unusedNibs objectAtIndex: random];

[self.unusedNibs removeObjectAtIndex: 随机];

//Load nib here.


【讨论】:

一组 (NSMutableSet) 会更好,因为笔尖没有顺序。 NSSet 可能不是最佳选择,因为您无法控制随机性。您可以调用 anyObject 但不能保证其结果将足够随机。使用数组,您可以 100% 确定获得一致的随机结果,因为您可以控制从数组中的哪个位置提取对象。 很抱歉打扰您,但是unusedNibs 会被设置成什么样的属性呢?谢谢 “属性”一词是指在您的标题中设置的变量。 @property (nonatomic, retain) NSMutableArray *unusedNibs;

以上是关于目标 C - 随机选择 XIB的主要内容,如果未能解决你的问题,请参考以下文章

批量选择随机文本文件

随机选择目标单元格,但无法针对同一单元格两次

如何在目标c中的多个标签上显示文本文件中的随机单词

用C语言随机选择0或1

C语言 编一个程序,产生0-100随机数,然后用选择排序法,从小到大排列

从目录中选择随机文件