将多个选定表格单元格中的数组传递到下一个视图控制器

Posted

技术标签:

【中文标题】将多个选定表格单元格中的数组传递到下一个视图控制器【英文标题】:Pass the array in multiple selected table cell into next view controller 【发布时间】:2016-12-10 04:27:06 【问题描述】:

我试图将数组从我的表视图传递给下一个视图控制器..

这是我到目前为止的代码。

 @IBAction func done(_ sender: Any) 
    let view = self.storyboard?.instantiateViewController(withIdentifier: "pilihtabel") as! labelpilih
        for index in 0 ... (tabelpilihan.indexPathsForSelectedRows?.count)! - 1
        let selectedrow = tabelpilihan.indexPathsForSelectedRows?[index].row
        print(pilihan[(tabelpilihan.indexPathsForSelectedRows?[index].row)!])
        view.pilih = pilihan[selectedrow!]

    

    self.navigationController?.pushViewController(view, animated: true)

它有效,但只通过了我选择的最后一行。

【问题讨论】:

对于在 tableview 中传递多条记录,多选允许 = true。然后选择多项选择数据到您的下一个视图控制器。 @AlbertWu 嘿,你的情况是什么? 【参考方案1】:

另一种传递方式

@IBAction func done(_ sender: Any) 
let view = self.storyboard?.instantiateViewController(withIdentifier: "pilihtabel") as! labelpilih

        let arrPassing = NSMutableArray()
        for index in 0 ... (tabelpilihan.indexPathsForSelectedRows?.count)! - 1
            let selectedrow = tabelpilihan.indexPathsForSelectedRows?[index].row
            arrPassing.addObject(pilihan[selectedrow!])
            print(pilihan[(tabelpilihan.indexPathsForSelectedRows?[index].row)!])

        
        view.pilih = arrPassing
        self.navigationController?.pushViewController(view, animated: true)

【讨论】:

NSMutableArray 和 Array 或 NSArray 有什么区别? @AlbertWu 在 Objective C 中,NSArray 用于定义一个以后不能更改/更改的数组,而 NSMutableArray 用于定义一个以后可以更改/更改的数组 @AlbertWu 因为在 swift 中常量是使用 let 定义的,而变量是由 var 定义的,因此如果使用 var 定义数组类型变量将是可变类型,如果使用 let 定义则不可变【参考方案2】:

view.pilih = pilihan[selectedrow!] 行中,您将值pilihan[selectedrow! 分配给下一个视图的pilih 变量。

但是pilih 不是数组类型,所以在循环结束时,最后一个值被覆盖,因此它只包含最后一个值。

要解决这个问题,您应该将其设为数组类型,并应附加诸如

之类的值

view.pilih.append(pilihan[selectedrow!])

【讨论】:

谢谢你,它工作得很好。你能解释一下 append 吗?我怎么能错过呢 @AlbertWu 您需要从 pilihan 传递一些值(而不是单个值),因此下一个视图的 pilih 变量必须是数组类型,以便您可以将这些值添加到 pilih 变量中,因此“ append" 用于将这些值一一添加。 当我尝试将下一个视图中的 pilih 更改为数组类型时。它显示“”,array1,array2。这就是我将 pilih 声明为数组类型 'var pilih : Array = [""]' 您应该将该行更改为 var pilih = Array(),这将初始化没有任何元素的变量。 好的,非常感谢。我真的是一个新手,必须学习很多东西。我会记住那个“追加”顺便说一句。

以上是关于将多个选定表格单元格中的数组传递到下一个视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

表格视图单元格中的集合视图

如何将表格视图数组中的每个字符串分隔到自己的单元格中?

保存多个选定 UITableViewCell 值的数组

在 Swift 中的表格视图中填充数据的问题

使用单独的控制器将自定义单元格中的标签设置为数组中的名称

如何从具有多个数组的字典中获取特定键并存储到放置在表格视图单元格中的字符串中