我想在uitableviewcell上随机显示4个选项(字符串)如何实现这个???
答案 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;