包含5个地方的表。
var places = ["lat": "42.61964890000001", "country": "United States", "name": "39 Cosgrove St", "lon": "-71.3031683"]
[["lat": "42.6285025", "country": "United States", "name": "138 B St", "lon": "-71.3288776"], ["lat": "42.6334255", "country": "United States", "name": "137 Pine St", "lon": "-71.3321021"], ["lat": "42.6225646", "country": "United States", "name": "98 Marriner St", "lon": "-71.31320219999999"], ["lat": "42.6252232", "country": "United States", "name": "48 Houghton St", "lon": "-71.3243308"], ["lat": "42.61964890000001", "country": "United States", "name": "39 Cosgrove St", "lon": "-71.3031683"]]
可以防止显示我的表格列表中的当前位置。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
if places[indexPath.row]["name"] != nil && places[indexPath.row]["name"] != places[activePlace]["name"] {
cell.textLabel?.text = places[indexPath.row]["name"]
}
return cell
}
要隐藏的文本,但似乎留下了一个看起来非常糟糕的空白。
有人可以对此有所启发。
答案 0 :(得分:2)
此
if places[indexPath.row]["name"] != nil && places[indexPath.row]["name"] != places[activePlace]["name"] {
cell.textLabel?.text = places[indexPath.row]["name"]
}
导致返回一个空单元格(如果不是一个出队的单元格),则需要从数据源数组中删除该信息(如果有许多活动单元格,则可以将其保留在另一个var或数组中)并重新加载表格,您可以使用此
places = places.compactMap{ $0["name"] }
从一开始就删除指甲
声明2个类似的临时变量
var tem:[String:String]? // pls create a model don't use array of dics
var activeIndex:Int?
假设您在一种方法中更改了活动状态,该方法给出了新的活动索引为 neActiveIndex ,那么您应该这样做
if let oldValue = tem && oldActi = activeIndex { // is it the first process
places.insert(oldValue,at:oldActi) // return it to it's place
}
// remove the new index
tem = places.remove(at: neActiveIndex) // remove also returns the deleted object
activeIndex = neActiveIndex
然后重新加载表格
如果活动索引没有变化,并且只有1次放映,那么什么也不要保留,只需删除viewDidLoad
内的活动索引,表本身将在vc启动时重新加载
答案 1 :(得分:1)
您的想法是错误的。您需要从数据模型中删除条目。
假设您有一个包含所有位置的数组places
。
您可以将表格视图更改为使用变量tablePlaces
作为数据模型
var tablePlaces: [[String, String]]
然后,用您的位置填充tablePlaces,但删除活动位置:
tablePlaces = places
tablePlaces.remove(at: activeIndex)
tableView.reloadData()