【发布时间】:2017-03-04 18:01:11
【问题描述】:
我想在我的 tableView 加载时选择一些行。因此,我在 cellForRowAt 中使用此代码:
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
}
问题是,它选择了所有行,但只用于眨眼。它很快被取消选择。我的 viewDidAppear 有以下代码:
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 看起来像下面的 sn-p:
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
}
}
}
现在我的问题是:如何正确选择单元格?我用它来缓存用户最后的选择。
【问题讨论】:
-
您在
viewDidAppear()而不是viewDidLoad()中进行数据获取和表视图配置是否有特定原因? -
不,我只是把它放在一起。会不会是问题?
-
您应该移动 tableview 配置以查看确实加载。请发布您的
loadAllGroups()方法,以便我们了解您是如何实现异步的。 -
我现在添加了更多的代码 sn-ps。我已将其移至 viewdidload,但这并没有改变行为。
标签: ios uitableview swift3 uikit