如何在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]; }
请检查,如果您在viewWillAppear
或viewDidAppear
调用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的图像行。