- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有大约 80 件元素。如果我选择的索引是 15(或更小的值),它会滚动到正确的位置。但如果选择索引为 70,则它不会滚动。但是当我手动滚动时它选择了该行。有谁知道如何解决这个问题?
-(void)select:(NSString*)selectedIndex {
if(selectedIndex == nil){
return;
}
UITableView *tableView = (UITableView*)view;
if(tableView == nil) {
return;
}
NSIndexPath *nextIndexPath = [self findIndexPath:selectedIndex table:tableView];
if(nextIndexPath != nil && ![viewController isSelectable:[selectedIndex intValue]]){
NSArray *indexPaths = [tableView indexPathsForVisibleRows];
nextIndexPath = [self nextMoveUp:nextIndexPath :indexPaths];
}
if(nextIndexPath != nil) {
[tableView selectRowAtIndexPath:nextIndexPath animated:YES scrollPosition:UITableViewScrollPositionMiddle];
if ([tableView cellForRowAtIndexPath:nextIndexPath] == nil) {
// cell is not visible - scroll it into view
[tableView scrollToRowAtIndexPath:nextIndexPath atScrollPosition:UITableViewScrollPositionNone animated:YES];
}
}
}
-(NSIndexPath*)findIndexPath:(NSString*)selectedIndex table:(UITableView*)tableView{
NSArray *indexPaths = [tableView indexPathsForVisibleRows];
if(indexPaths == nil || [indexPaths count] == 0) {
return nil;
}
NSIndexPath *lastIndexPath = NULL;
for (NSIndexPath *path in indexPaths) {
if(path.row == [selectedIndex intValue]){
return path;
}
lastIndexPath = path;
}
if(lastIndexPath != nil && lastIndexPath.row < [selectedIndex intValue]){
[tableView scrollToRowAtIndexPath:lastIndexPath atScrollPosition:UITableViewScrollPositionTop animated:NO];
return [self findIndexPath:selectedIndex table:tableView];
}
return nil;
}
最佳答案
我刚遇到这个问题。在我的例子中,我在定义所有行之前调用 scrollToRowAtIndexPath(或 selectRowAtIndexPath),即在对所有行调用 cellForRowAtIndexPath 之前。我的解决方案是定义一个方法来选择行并使用 performSelectorOnMainThread 调用它以延迟直到第一次刷新完成。
关于ios - selectRowAtIndexPath 没有滚动到 UITableView 中的正确位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21041318/
我有一个类,允许用户将条目添加到服务器端表。一切正常,直到我尝试刷新 UITableView与新数据。我调用服务器来获取新数据集,用它来刷新 NSArray那是表的数据源,然后尝试重新加载表。这是从服
我正在尝试以编程方式选择 TableView 行。我一直在关注此处的文档和其他引用资料,但它不起作用。我没有收到错误,只是没有选择行。 注意:目前我只是尝试手动选择一行。 我是否正确使用了委托(del
我觉得这是一个需要特别注意的问题......我的Google-fu很好,但我还没有得到任何有用的东西。 这是最简单的事情,但我似乎无法弄清楚它的问题所在。 我有一个 UITableView。这是我的
我用 [tableView selectRowAtIndexPath:index animated:YES scrollPosition:UITableViewScrollPositionMiddle
I've got a menu that's a UITableview in a UIPopovercontroller that when selected scrolls the parent
我有大约 80 件元素。如果我选择的索引是 15(或更小的值),它会滚动到正确的位置。但如果选择索引为 70,则它不会滚动。但是当我手动滚动时它选择了该行。有谁知道如何解决这个问题? -(void)s
我正在尝试使用 selectRowAtIndexPath 强制选择(突出显示)UITableViewCell.. 例如,可以说我希望始终突出显示 TableView 中的第一个单元格,我在 viewD
我有以下方法来选择当前中心 View Controller 的行: - (void)_updateSelection { [self.tableView reloadData]; [_
我想调用 selectRowAtIndexPath 在作为 UIViewController 的 subview 的 UITableView 上,我从中调用它。 我已经设置了它,这样当你选择一个单元格
我有一个 UITableViewCell 的子类,它给我自定义样式和额外数据。 当用户交互时一切正常,但是当我通过调用 selectRowAtIndexPath 以编程方式选择它时,它会恢复为标准选择
我正在尝试使用以下代码以编程方式选择 TableView 中的所有行: func tableView(tableView: UITableView, cellForRowAtIndexPath in
背景:我正在尝试实现一个可以折叠和展开的分段表格 View 。折叠时,表格会记住选择的内容并在展开时保留选择状态。 问题:a 部分已扩展并正常运行。该单元格已按应有的方式被选中。但是,位于同一位置但下
我有一个 UITableViewController,它根据用户之前的选择动态填充。在某些情况下,用户应该能够选择表中的多行,但在其他情况下他不应该。在这两种情况下,我都想自动选择第一行,但我发现只有
我经常需要将表格 View 单元格设置为初始选定状态,对此我使用以下代码: [self.tableView selectRowAtIndexPath:indexPath animated:NO
我正在尝试以编程方式在表格 View 中选择一个单元格。我在点击 selectRowAtIndexPath 时收到 SIGABORT 错误。 myIndex 的值为 1。我从已实现所需的 tablev
我正在制作自定义 UITableView 菜单选择器组件。每次我选择特定的行时,我都会保存该行的索引路径,这样下次用户选择另一行时,人们就可以知道他之前选择的行。所以我将其添加到 cellForRow
我在 tableView:didSelectRowAtIndexPath: 中有以下代码 [tableView reloadData]; [tableView selectRowAtIndexPath
我是一名优秀的程序员,十分优秀!