Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UITababVIEW -始终选择中间行_Ios_Objective C_Cocoa Touch_Uitableview - Fatal编程技术网

Ios UITababVIEW -始终选择中间行

Ios UITababVIEW -始终选择中间行,ios,objective-c,cocoa-touch,uitableview,Ios,Objective C,Cocoa Touch,Uitableview,我有一个超过50行的UITableView,但一次只显示5行。如何强制始终选中中间行?例如,如果显示2,3,4,5,6,则将选择4。 用户滚动->将选择14、15、16、17、18、16等 谢谢使用UITableViewDelegate协议中的tableView:willDisplayCell:forRowAtIndexPath:方法 在这里,您可以检查indexPath.row值,如果它在指定的范围内,请使用cell.selected 进一步资料: 尽管我建议您在数据源中维护是否应选择单元格

我有一个超过50行的
UITableView
,但一次只显示5行。如何强制始终选中中间行?例如,如果显示2,3,4,5,6,则将选择4。 用户滚动->将选择14、15、16、17、18、16等


谢谢

使用
UITableViewDelegate
协议中的
tableView:willDisplayCell:forRowAtIndexPath:
方法

在这里,您可以检查indexPath.row值,如果它在指定的范围内,请使用cell.selected

进一步资料:

尽管我建议您在数据源中维护是否应选择单元格,而不是挂接到单元格的位置,但通过这种方式,您可以检查数据源是否应选择单元格,而不是强制自己为特定的事情使用特定的索引单元格


希望这能有所帮助。

我想这是UIPickerView定制的目的


看一看,这将帮助你

这个方法对我来说非常有效。我有一个一次显示5行的表视图,但是当我记录visibleRows时,我总是得到7个,所以我得到这七个的索引路径,并选择中间的一个(索引3):


你真的想这样选择还是想在中间一排加上一些花哨的覆盖物?想想看,两者都是。但是选择部分是我所追求的。这就是UIPickerView I的目的think@LithuT.V有点像,但是
UIPickerView
是一个非常有限、丑陋的设计,还有很多其他的缺点,让我不想使用它。这就是我喜欢自己写更好的东西的方式。谢谢。我熟悉
tableView:willDisplayCell:forrowatinexpath:
。问题是我如何判断我从中得到的index.row是在列表的顶部、中间还是末尾?您不应该使用视图来确定所选内容,但是您的数据源,如果您使用数据源,这就变得微不足道了。在回答您的问题时,您可以从数据源方法numberOfRowsInSection:中获取节中的行数,由此您可以确定当前indexPath.row是否位于顶部/中间/底部。
-(void)scrollViewDidScroll:(UIScrollView *)scrollView {
    NSArray *vis = self.tableView.indexPathsForVisibleRows;
    if (vis.count %2 == 1) {
        [self.tableView selectRowAtIndexPath:vis[3] animated:NO scrollPosition:UITableViewScrollPositionNone];
    }
}