selectRowAtIndexPath 在 viewWillAppear 中失败
Posted
技术标签:
【中文标题】selectRowAtIndexPath 在 viewWillAppear 中失败【英文标题】:selectRowAtIndexPath failing in viewWillAppear 【发布时间】:2011-09-28 22:06:41 【问题描述】:I've got a menu that's a UITableview
in a UIPopovercontroller
that when selected scrolls the parent view's UIScollView to a specific frame.
效果很好。
问题是如果你使用pageControl滚动框架我需要更新表格中选中的行[_delegate returnPageNumber]
返回当前pageControl.currentPage
没有错误,NSLog 正在报告正确的页码:
scrollIndexPath is <NSIndexPath 0x1a3380> 2 indexes [0, 3]
但是正确的单元格没有突出显示...为什么????
- (void)viewWillAppear:(BOOL)animated
[super viewWillAppear:animated];
//[tableView reloadData];
int isPage = [_delegate returnPageNumber];
NSIndexPath *scrollIndexPath = [NSIndexPath indexPathForRow:(isPage) inSection:0];
NSLog(@"scrollIndexPath is %@",scrollIndexPath);
[tableView selectRowAtIndexPath:scrollIndexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
我尝试在之前和之后放置 [tableView reloadData]
并将代码放在 viewDidAppear 中......没有任何效果
【问题讨论】:
你为什么不使用 -didSelectRowAtIndexPath? 【参考方案1】:尝试在其他所有内容之后调用[super viewWillAppear]
,在viewWillAppear
:
- (void)viewWillAppear:(BOOL)animated
NSIndexPath *selection = [self.tableView indexPathForSelectedRow];
[[self tableView] reloadData];
if (selection)
[[self tableView] selectRowAtIndexPath:selection animated:NO scrollPosition:UITableViewScrollPositionNone];
[super viewWillAppear:animated]; //Trick is calling super last in this case. Then you can retrieve previously selected row to --> NSIndexPath *selection
【讨论】:
【参考方案2】:现在开始工作了!
- (void)viewDidAppear:(BOOL)animated
[super viewDidAppear:animated];
[[self tableView] reloadData];
int isPage = [_delegate returnPageNumber];
NSIndexPath *scrollIndexPath = [NSIndexPath indexPathForRow:(isPage) inSection:0];
NSLog(@"viewDidAppear scrollIndexPath is %@",scrollIndexPath);
[[self tableView] selectRowAtIndexPath:scrollIndexPath animated:YES scrollPosition:UITableViewScrollPositionNone];
造成差异的事情是断开视图出口,然后将其重新连接到 tableview。不知道为什么这会有所作为?我尝试将视图控制器添加到笔尖,但没有任何区别,因此删除它并将视图重新连接到 tableview 突然产生了结果。巫毒教。
【讨论】:
以上是关于selectRowAtIndexPath 在 viewWillAppear 中失败的主要内容,如果未能解决你的问题,请参考以下文章
在 tableview 上调用 selectRowAtIndexPath 时出现 Swift 错误
来自另一个 UIVIewController 的 selectRowAtIndexPath 不起作用
selectRowAtIndexPath 仅在 allowedMultipleSelection 为 YES 时有效
我可以在 UITableView 上使用 -selectRowAtIndexPath: (或其他任何东西)来触发委托的 -didSelectRowAtIndexPath: 方法吗?