- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我不知道 didSelectRowAt 方法如何更改数组中的所有元素(在每个索引处)那里有打印语句来可视化结果,因此在单击单元格 1 两次后我得到:1个真真真1个假假假
不知道 indexPath.row 是如何变得疯狂并遍历整个数组范围的任何帮助将不胜感激
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return itemArray.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath)
cell.textLabel?.text = itemArray[indexPath.row].title
if itemArray[indexPath.row].done == true {
cell.accessoryType = .checkmark
}else{
cell.accessoryType = .none
}
return cell
}
//MARK: TableView Delegate methods
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print(indexPath.row)
if itemArray[indexPath.row].done == true {
itemArray[indexPath.row].done = false
print(itemArray[indexPath.row].done, itemArray[indexPath.row-1].done, itemArray[indexPath.row+1].done)
}else{
itemArray[indexPath.row].done = true
print(itemArray[indexPath.row].done, itemArray[indexPath.row-1].done, itemArray[indexPath.row+1].done)
}
tableView.reloadData()
tableView.deselectRow(at: indexPath, animated: true)
}
项目类型是:
class Item {
var title : String = ""
var done : Bool = false
}
数组是这样填充的:
override func viewDidLoad() {
super.viewDidLoad()
let newItem: Item = Item()
newItem.title = "asdaS"
itemArray.append(newItem)
itemArray.append(newItem)
itemArray.append(newItem)
}
最佳答案
您只是创建一个对象并将同一对象追加到数组中。当您更改任何索引时,它会更新整个数组,因为所有索引都包含某个对象
class Item {
var name = ""
var done = true
}
let x = Item()
var arr = [Item]()
for _ in 0..<5 {
arr.append(x)
}
print(arr.flatMap({ $0.done })) //[true, true, true, true, true]
arr[1].done = false
print(arr.flatMap({ $0.done })) //[false, false, false, false, false]
您需要做的是为每个索引创建一个单独的对象
class Item {
var name = ""
var done = true
}
var arr = [Item]()
for _ in 0..<5 {
let x = Item() //NOTICE THAT THIS LINE HAS BEEN MOVED INSIDE THE LOOP
arr.append(x)
}
print(arr.flatMap({ $0.done })) //[true, true, true, true, true]
arr[1].done = false
print(arr.flatMap({ $0.done })) //[true, false, true, true, true]
关于arrays - didSelectRowAt 更改所有行中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51492668/
这个问题在这里已经有了答案: UITapGestureRecognizer breaks UITableView didSelectRowAtIndexPath (21 个回答) 5年前关闭。 我在
我在 View 中使用了 Collection View 和一个表格 View ,并且在 didSelect 函数上图像没有改变。 下面是代码: func tableView(_ tableView:
我有一个 tableView,我设置了委托(delegate)和数据源,但是当点击单元格时,didSelectRowAt 函数没有被调用。这是我的代码: private let reuseIdenti
我有一个动态表格,其中显示许多 MKMapItems - 这些项目由 cellForRowAt 显示。但不知何故,如果我点击单元格 didSelectRow 如果我想打印它,将不会返回 map 项:
我正在尝试构建一个带有 tableView 的应用程序,到目前为止我已经达到了填充 tableView 的程度,但是当我按下行时我无法发生任何事情。任何帮助,将不胜感激。如果您缺少一些可以帮助我的代码
我正在尝试将 url 字符串推送到我的 Main,当我按下单元格时它会显示我的主视图 Controller 。 这是我的代码。 #pragma mark - Table view delegate
我会粘贴一些我的代码 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableVi
我正在努力解决我的 xcode 项目中的一个问题。我在 TableView 中显示自定义单元格并使用 didSelectRowAt indexPath: 显示详细 View 。它按照我想要的方式工作,
我有一个包含 3(cell1,cell2,cell3) 个自定义单元格的动态表格 View ,它可以在任何地方重复使用 0 次到 9 次。 (表格 View 中的最大单元格为 27 个单元格)。 这
什么可以让 UITableViewCell 只检测多点触控?如果我用一根手指点击,它不会调用 didSelectRowAtIndex。 这是我的代码: func tableView(_ tableVi
我不知道 didSelectRowAt 方法如何更改数组中的所有元素(在每个索引处)那里有打印语句来可视化结果,因此在单击单元格 1 两次后我得到:1个真真真1个假假假 不知道 indexPath.r
我有一个项目有几个不同的 VC...其中两个有 TableViews 第一个工作得很好,我在那里有一个自定义 View 等。 第二个也是自定义的,它可以很好地填充信息,但与第一个不同...我无法点击它
我对 UITableView 委托(delegate)函数 didSelectRowAt 有疑问。一切正常,但不幸的是 didSelectRowAt 没有被调用。我阅读了其他一些关于该问题的 stac
我在 ViewController 中有一个自定义 UITableView。我的自定义表格具有自定义 UITableViewCells。这是我的 ViewController 中的代码: ViewDi
某些自定义单元格未调用 didSelectRowAt。我还在 tableView 上使用手势识别器。我尝试覆盖 shouldReceive func gestureRecognizer(_ sende
下面的代码应该从数组中调用用户名,并且用户能够点击所需的用户名。对该数组的调用成功,我可以看到用户名,但无法利用它。它甚至不打印“didSelectRowAt”。感谢你的帮助。谢谢。 func tab
正如你在我的代码中看到的,一旦选择了一行但没有成功,我尝试了一些方法将 UIViewTableController 关闭回我的父 ViewController 我的 UITableViewContro
我的 UITableVieController 遇到问题。它没有正确调用我的 didSelectRowAt 函数。我的 UITableView 中有多个部分,但我的代码的另一部分具有相同的确切代码,工
我有一个 UITableView;没有 tableHeaderView 点击一行并触发 didSelectRowAt 返回正确的索引路径。 当我设置 tableHeaderView 属性时,didSe
我正在尝试在我的 UICollectionView 中选择一个单元格,我已经完成了所有工作,包括设置委托(delegate)和数据源,我的 ScrollView 上没有点击手势识别器。 我在 Scro
我是一名优秀的程序员,十分优秀!