我有一张用户查看的表格。当用户摇动他的设备时,我想要选择一个随机行。我该怎么做?
我已经识别出摇动手势,我可以创建一个不超过列表计数的随机整数,但是我找不到正确的代码来在表格中突出显示该行。
在Apple的文档中,我发现:
NSIndexPath *rowToSelect; // assume this exists and is set properly
UITableView *myTableView; // assume this exists
[myTableView selectRowAtIndexPath:rowToSelect animated:YES scrollPosition:UITableViewScrollPositionNone;
[myTableView scrollToRowAtIndexPath:rowToSelect atScrollPosition:UITableViewScrollPositionNon animate:YES];
但我无法让它发挥作用。我有UITableView *myTableView
。我使用随机整数作为rowToSelect。
答案 0 :(得分:5)
这就是我的工作方式。我保留了以下内容:
NSIndexPath *scrollIndexPath = [NSIndexPath indexPathForRow:randomRij inSection:0];
我添加了以下几行:
[eenTabelView selectRowAtIndexPath:scrollIndexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
我评论了以下一行:
//[[self eenTabelView] scrollToRowAtIndexPath:scrollIndexPath atScrollPosition:UITableViewScrollPositionNone animated:NO];
答案 1 :(得分:0)
重要规则:所有UI更改必须在主线程中完成。 添加
if (![NSThread isMainThread])
{
[self performSelectorOnMainThread:_cmd withObject:(%YOUR_OBJECT_TAKEN_IN_THIS_SELECTOR) waitUntilDone:Yes];
}
在您的代码运行之前已经在主线程中运行OR(更正确的变体)将所有UI更改提取到单独的方法并在主线程中调用它。
示例:
-(void)yourSelector
{
…
UI changes
…
}
-(IBOutlet)yourAction
{
[self performSelectorOnMainThread:@selector(yourSelector) withObject:nil waitUntilDone:Yes];
}