(Swift 3)我们如何在 ViewDidAppear() 之前进入单元格?我想在用户进入此控制器后立即显示单元格
Posted
技术标签:
【中文标题】(Swift 3)我们如何在 ViewDidAppear() 之前进入单元格?我想在用户进入此控制器后立即显示单元格【英文标题】:(Swift 3) How can we go to cell before ViewDidAppear() ? I want to show the cell just after user goes to this controller 【发布时间】:2017-08-31 08:10:02 【问题描述】:override func viewDidLoad()
super.viewDidLoad()
override func viewDidAppear(_ animated: Bool)
let indexPath = IndexPath(row: 12, section: 0)
let theCell:UITableViewCell? = tableView.cellForRow(at: indexPath as IndexPath)
if let theCell = theCell
var tableViewCenter:CGPoint = tableView.contentOffset
tableViewCenter.y += tableView.frame.size.height/2
tableView.contentOffset = CGPoint(x:0, y:theCell.center.y-(theCell.frame.size.height))
tableView.reloadData()
override func numberOfSections(in tableView: UITableView) -> Int
return 1
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return jo.count
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
cell.textLabel?.text = jo[indexPath.row]
return cell
当我转到此视图时,我希望消息自动滚动到我将提供的索引路径,并且用户应该看不到滚动动画,它应该在视图出现之前出现?
【问题讨论】:
【参考方案1】:在你的表格视图上使用这个方法:
Apple doc
func scrollToRow(at indexPath: IndexPath,
at scrollPosition: UITableViewScrollPosition,
animated: Bool)
用法:
tableView.scrollToRow(at: indexPath, at: UITableViewScrollPosition.middle, animated: false)
在你的情况下:
override func viewWillAppear(_ animated: Bool)
super.viewWillAppear(animated)
tableView.reloadData()
let indexPath = IndexPath(row: 12, section: 0)
tableView.scrollToRow(at: indexPath, at: UITableViewScrollPosition.middle, animated: false)
【讨论】:
在哪里调用这个函数,因为我希望用户在视图出现时看不到滚动,它应该在那个索引处? viewWillAppear(),但也可以试试 viewDidAppear() 看看有什么不同 我们不能在 viewWillAppear 中使用因为下面的函数被执行了,这意味着单元格没有被创建。override func numberOfSections(in tableView: UITableView) -> Int return 1 override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int return jo.count override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) cell.textLabel?.text = jo[indexPath.row] return cell
是的,但在这种情况下,用户可以看到滚动,我不希望用户看到滚动
调用viewDidLayoutSubviews中的代码,应该可以了。 override func viewDidLayoutSubviews() super.viewDidLayoutSubviews() // 在这里调用 以上是关于(Swift 3)我们如何在 ViewDidAppear() 之前进入单元格?我想在用户进入此控制器后立即显示单元格的主要内容,如果未能解决你的问题,请参考以下文章
(Swift 3)我们如何在 ViewDidAppear() 之前进入单元格?我想在用户进入此控制器后立即显示单元格
如何使用 Swift 在文本字段(从右到左)上输入货币格式?
如何使用 Swift 在文本字段(从右到左)上输入货币格式?