如何在popup窗口之后停止UITableView返回顶部单元格

我有一个tableView充满了图像。 当用户点击一个图像(在单元格内)时,具有较大可缩放版本图像的viewController被调用,并带有popup窗口。 当我closurespopover并返回到我的tableView,它会自动显示表的顶部单元格。 有什么方法可以阻止这种情况发生,并且在popup窗口被调用之前返回到之前的位置/单元格?

编辑:调用我使用的popover

performSegueWithIdentifier("segueToPopOver", sender: tap.view) 

解雇它我使用以下内容:

  let tmpController :UIViewController! = self.presentingViewController; self.dismissViewControllerAnimated(true, completion: {()->Void in tmpController.dismissViewControllerAnimated(true, completion: nil); }); 

在显示您的zoomViewController之前获取tableview内容偏移。

 -(void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; tableViewContentOffset = self.tableView.contentOffset; } 

并在viewWillAppear中再次设置tableview偏移量

 -(void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self.tableView setContentOffset:tableViewContentOffset]; } 

请检查,如果您在viewWillAppearviewDidAppear调用reloadData 。 或者如果您在这两种方法中的任何reloadsection中调用任何reloadsection部分。

您也可以在viewWillDisappear / viewDidDisappear方法中validation这些调用。

最可能的原因是你打开表重新加载一些之间打开和closurespopup视图(可能在一个或多个像viewDidAppear,viewWillAppear等方法)。 如果你可以简单地删除它,那么它不会被滚动到顶部。

或者可以在打开弹窗视图之前保持内容偏移,然后在closures它之后设置偏移量,

 override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) tableView.contentOffset = offset } override func viewDidDisappear(animated: Bool) { super.viewDidDisappear(animated) offset = tableView.contentOffset } 

caching所选图像单元格的选定indexPath ,并在viewWillAppear方法中,

  if(selectedPath != nil) { [self.tableView scrollToRowAtIndexPath:selectedPath atScrollPosition:UITableViewScrollPositionBottom animated:YES]; } 

这将回滚到您select的图像行。