UITableViewController 在关闭第二个 ViewController 后返回到第一个单元格
Posted
技术标签:
【中文标题】UITableViewController 在关闭第二个 ViewController 后返回到第一个单元格【英文标题】:UITableViewController goes back to 1st cell after dismissing 2nd ViewController 【发布时间】:2016-01-22 10:05:57 【问题描述】:我在 UITableViewController 中实现了 didSelectRowAtIndexPath:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
// determine selected cell
let name = self.names[indexPath.row]
// present menu VC
let destVC: UIViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("MenuItemsReadOnly") as UIViewController
self.navigationController?.pushViewController(destVC, animated: true)
到目前为止一切顺利。它工作正常。在我关闭 destVC 后,我的问题就开始了:
func doneSelf()
self.navigationController?.popViewControllerAnimated(true)
解雇后,我回到了我的 UITableViewController,但视图一直滚动到顶部,因此第一个单元格可见。
我还没有实现函数viewDidAppear。我没有在 viewDidLoad 中调用 tableView.reloadData(),这是我在 UITableViewController 中实现的唯一与视图相关的方法:
override func viewDidLoad()
super.viewDidLoad()
self.tableView.delegate = self
self.tableView.dataSource = self
// format navigation controller
self.navigationController!.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName : UIColor.whiteColor()]
self.navigationController!.navigationBar.translucent = false
self.navigationController!.navigationBar.barStyle = .Black
self.navigationController!.navigationBar.barTintColor = UIColor.flatRedColor()
self.navigationController!.navigationBar.tintColor = UIColor.flatRedColor()
self.automaticallyAdjustsScrollViewInsets = false
self.tableView.backgroundColor = UIColor.flatWhiteColor()
// format table UI
self.tableView.separatorStyle = UITableViewCellSeparatorStyle.None
// last cell would get cropped off without this
self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 64, 0)
// navigation buttons
navigationItem.leftBarButtonItem = UIBarButtonItem(image: UIImage(named: "IconMenuShortcut"), style: .Plain, target: self, action: "presentLeftMenuViewController")
navigationItem.leftBarButtonItem?.tintColor = UIColor.whiteColor()
这是设计使然吗?从第二个 UIViewController 回来后,如何让选定的单元格保持在视图中并且不会自动移回顶部?
【问题讨论】:
这不是设计使然,您可能在viewDid/WillAppear
中编写了一些代码,导致了这种情况。
***.com/questions/34868661/… 使用这个!它会解决你的问题。也请为答案投票。
这很好用,谢谢!如果您将评论改写为答案,我会接受。
【参考方案1】:
对选定的indexPath
有一个引用,当返回TableviewController
时,调用
[self.tableView scrollToRowAtIndexPath:path atScrollPosition:UITableViewScrollPositionNone animated:YES];
【讨论】:
感谢您的建议,但仍然有一些动作,即使使用动画:false 选项。我需要的是 tableView 在第二个 VC 被解雇后根本不动。以上是关于UITableViewController 在关闭第二个 ViewController 后返回到第一个单元格的主要内容,如果未能解决你的问题,请参考以下文章
将 TAB BAR 添加到 uitableviewcontroller [关闭]
UITableViewController 在关闭第二个 ViewController 后返回到第一个单元格
为啥这个 UITableViewController 会模态地关闭?
无法关闭 Popover UITableViewController