如何在uitableViewCell中随机显示字符串?

时间:2009-06-17 10:06:24

标签: iphone objective-c cocoa cocoa-touch

我想在uitableviewcell上随机显示4个选项(字符串)如何实现这个???

2 个答案:

答案 0 :(得分:2)

使用NSMutableArray而不是正常数组,然后使用随机函数获取随机索引,如:

int rand = arc4random() % [yourMutableArray count];

然后获取值并执行:

[yourMutableArray removeObjectAtIndex:rand];

答案 1 :(得分:0)

取决于'随机显示4个选项'的含义。

我假设你想在UITableView中用一个字符串中的一个显示一个单元格。

创建UITableDataSource,在数组中存储4个字符串,当UITableView请求所选行的单元格时,使用随机函数返回4个字符串中的一个。

查看有关如何为UITableView / DataSource实现所需方法的Apple开发人员文档。

替换:

 // i have 4 strings in the array listOfOptionsText
 cell.text = [listOfOptionsText objectAtIndex:indexPath.row];
 return cell;

使用:

 int rand = arc4random() % [listOfOptionsText count];
 cell.text = [listOfOptionsText objectAtIndex:rand];
 return cell;

Re:重复

如果你得到重复,我假设你想要显示4个字符串(最终) 如果你想以随机的顺序显示4个值,那么你可以先调整字符串,然后按顺序选择它们,洗牌示例:

 NSMutableArray * deck =
[[NSMutableArray alloc] initWithObjects: @"One", @"Two", @"Three", @"Four", nil];

for (id string in deck) NSLog(@"%@", string);

int pos = 0;
int next = 0;
int i;
for (i = 0; i < 10; ++i)
{
    next = arc4random() % [deck count];
    [deck exchangeObjectAtIndex:pos withObjectAtIndex:next];
    pos = next;
}

NSLog(@"after shuffle ...");
for (id string in deck) NSLog(@"%@", string);

[deck release];

如果你在初始化过程中对字符串进行随机播放,那么你可以按顺序选择它们(假设你不想要重复,这意味着你要从4中挑选4个字符串......)。我不确定目的究竟是什么。

现在,您可以在设置单元格值时返回原始代码:

cell.text = [listOfOptionsText objectAtIndex:indexPath.row];
return cell;