【发布时间】: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