iOS Swift 3最初在创建时在tableView中选择多行
我想在加载tableView时选择一些行。因此,我在cellForRowAt中使用以下代码:iOS Swift 3最初在创建时在tableView中选择多行,ios,uitableview,swift3,uikit,Ios,Uitableview,Swift3,Uikit,我想在加载tableView时选择一些行。因此,我在cellForRowAt中使用以下代码: override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "suggest", for: indexPath) as! g
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "suggest", for: indexPath) as! groupViewControllerCell
let item = self.feed!.items[indexPath.row]
cell.title.text = item.name
cell.setSelected(true, animated: true)
return cell
}
问题是,它会选择所有行,但只会在眨眼之间选择。它很快就会被取消选择。My ViewDidDisplay具有以下代码:
override func viewDidAppear(_ animated: Bool) {
tableView.allowsMultipleSelectionDuringEditing = true
tableView.allowsSelection = true
self.tableView.setEditing(true, animated: false)
self.loadAllGroups()
loadAllGroups从服务器获取所有数据,然后重新加载tableView
func loadAllGroups()
{
if let url = URL(string: urlString) {
self.updateGroupFeed(url, completion: { [unowned self] (feed) -> Void in
self.feed = feed
})
}
}
updateGroupFeed类似于以下代码段:
func updateGroupFeed(_ url: URL, completion: @escaping (_ feed: GroupFeed?) -> Void) {
**headers for alamofire request**
Alamofire.request(url, method: .get, encoding: JSONEncoding.default, headers: headers)
.responseJSON { [unowned self] response in
guard let responseError = response.result.error else {
let feed = GroupFeed(data: response.data!, sourceURL: url)
OperationQueue.main.addOperation({ [unowned self] () -> Void in
})
completion(feed)
return
}
}
}
现在我的问题是:如何正确选择单元格?我使用它来缓存用户最后的选择 您正在设置单元格的选定状态,这会影响单元格的渲染方式,但实际上并没有选择行,因此一旦表格刷新,选定状态就会丢失 您需要告诉tableview使用选择单元格
我不确定您是否希望在
cellForRowAt
中执行此操作。在完成处理程序中选择单元格可能是一个更好的主意 您在viewdispect()
中而不是在viewdiload()
中执行数据获取和表视图配置有什么具体原因吗?没有,我只是把它们放在一起。可能是问题吗?您应该将tableview配置移动到view加载。请发布您的loadAllGroups()
方法,以便我们了解您是如何实现异步的。我现在添加了更多的代码片段。我已经将其移动到viewdidload,但这并没有改变其行为。非常感谢您解释这种差异!现在可以了。