【问题标题】:Keep selected rows when dismissing UITableViewController - Swift, UITableView关闭 UITableViewController 时保留选定的行 - Swift,UITableView
【发布时间】:2014-11-25 04:39:53
【问题描述】:

有谁知道当您从新的 View Controller 移回 UITableView 时如何在 UITableView 中保持选中/突出显示的行?

当我进行选择并关闭表格视图控制器时,当我返回时,选择不再存在。我在 super.viewDidLoad 中将 clearsSelectionOnViewWillAppear 设置为 false 但这不起作用,StackOverflow 上的某个人提到做了以下事情:

class TableViewController:
UITableViewController,
UITableViewDelegate,
UITableViewDataSource {


@IBOutlet weak var drugTableView: UITableView!

override func viewDidLoad()
    {
    super.viewDidLoad()
    self.clearsSelectionOnViewWillAppear = false

    }


override func viewWillAppear(animated: Bool) {

let indexPaths = self.drugTableView.indexPathsForSelectedRows() as [NSIndexPath]

self.tableView.selectRowAtIndexPath(indexPath: indexPaths, animated: true, scrollPosition: UITableViewScrollPosition.None)

}

但由于此错误而无法编译:

self.tableView.selectRowAtIndexPath(indexPath: indexPaths, animated: true, scrollPosition: UITableViewScrollPosition.None) 无法将表达式的类型“(indexPath:[AnyObject]?,动画:BooleanLiteralConvertible,scrollPosition:UITableViewScrollPosition)”转换为类型“BooleanLiteralConvertible”

有人能帮我解决这个问题吗,这真是令人头疼。

谢谢。

【问题讨论】:

  • 如果您正在关闭您的表格视图控制器,当您返回时,您将进入您的表格视图控制器的一个新实例,因此它不会知道您的选择。如果你想回到同一个实例,你需要在它之前的控制器中保留一个指向它的强指针,并且只有在你第一次去它时才实例化一个新的。
  • 有道理,但我该怎么做呢?抱歉,我对 swift 很陌生。
  • 不知道如何编写一个强指针并且只实例化一个tableview 1次。

标签: ios uitableview swift


【解决方案1】:

尝试在表格视图控制器上将 clearsSelectionOnViewWillAppear 设置为 false。

【讨论】:

  • 你正在做什么样的过渡?正在执行segue?你是呈现的还是被呈现的视图控制器?
  • 我正在执行情节提要中的模态转场
  • ctrl 从前一个 ViewController 中的静态单元格拖到 TableViewController....imgur.com/LrJQ9YB
猜你喜欢
  • 2015-10-17
  • 1970-01-01
  • 1970-01-01
  • 2016-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-23
  • 1970-01-01
相关资源
最近更新 更多