我有一个带有用于导航的表视图的UISplitViewController。它类似于邮件应用程序。当您在纵向模式下单击表格视图时,弹出窗口会隐藏起来。当您单击导航栏以返回弹出窗口时,所选项目不再显示为选中状态。如何在不重新选择该项目的情况下使其显示为选中状态?(就像在邮件应用中一样)
发布于 2010-11-02 00:26:13
我已经有了一个有效的解决方案,但它令人沮丧地破解。我得给selectRowAtIndexPath打两次电话。似乎cellForRowAtIndexPath正在使在viewWillAppear中所做的选择无效。但是,仍然需要在viewDidAppear中调用它,因此在调用cellForRowAtIndexPath之前,视图会滚动到适当的位置。
- (void)viewWillDisappear:(BOOL)animated
{
NSIndexPath *selected = [self.tableView indexPathForSelectedRow];
_selectedRow = selected.row;
}
- (void)viewDidAppear:(BOOL)animated
{
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:_selectedRow inSection:0];
[self.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionMiddle];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//initialize cell code here...
if (indexPath.row == _selectedRow) {
[self.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionMiddle];
}
}发布于 2011-04-22 02:50:38
在您的viewDidLoad方法中,是否调用
self.clearsSelectionOnViewWillAppear = NO;?
Xcode的SplitView模板就是这样做的。
发布于 2010-10-30 06:00:43
您是否有任何更改
[tableView deselectRowAtIndexPath:indexPath animated:YES];在RootViewController中的didSelectRowAtIndexPath中吗?
https://stackoverflow.com/questions/4055490
复制相似问题