Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将所选tableView cell.row中的文本传递给文本框xcode_Ios_Swift_Textview_Tableview_Didselectrowatindexpath - Fatal编程技术网

Ios 将所选tableView cell.row中的文本传递给文本框xcode

Ios 将所选tableView cell.row中的文本传递给文本框xcode,ios,swift,textview,tableview,didselectrowatindexpath,Ios,Swift,Textview,Tableview,Didselectrowatindexpath,我有一个tableView,允许用户从数据数组中进行多项选择 当用户单击“完成”时,我希望所选文本随后转移到另一个tableViews textView 是否有一种方法可以在所选文本上进行转换,并用、 我正在编程 var checked = [Int]() var items = [String]() var selectedItems = [String]() @objc func done() { let hud = JGProgress

我有一个tableView,允许用户从数据数组中进行多项选择

当用户单击“完成”时,我希望所选文本随后转移到另一个tableViews textView

是否有一种方法可以在所选文本上进行转换,并用、

我正在编程

    var checked = [Int]()
var items = [String]()
var selectedItems = [String]()

     @objc func done() {
    
          let hud = JGProgressHUD(style: .dark)
          hud.textLabel.text = "Saving!"
          hud.show(in: view)
          dismiss(animated: true, completion: nil)
          hud.dismiss()
    
    let aCell = aboutCell(style: .default, reuseIdentifier: nil)
    aCell.textField3.text = selectedItems.joined(separator: ",")
    
}
 
    
  override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    
    if tableView.cellForRow(at: indexPath)?.accessoryType == UITableViewCell.AccessoryType.checkmark {
        
    tableView.cellForRow(at: indexPath)?.accessoryType = UITableViewCell.AccessoryType.none
        
    } else {
        
    tableView.cellForRow(at: indexPath)?.accessoryType = UITableViewCell.AccessoryType.checkmark
        
         if selectedItems.contains(items[indexPath.row]) {
            selectedItems.remove(at: selectedItems.firstIndex(of: items[indexPath.row])!)
            } else {
            selectedItems.append(items[indexPath.row])
            }
        checked.append(indexPath.row)
    }
}

根据我对这个问题的理解,以下是我的想法:

1。首先设置必要的变量

var items = [String]() // data to display in tableview

var selectedItems = [String]() // here all the selected datas are stored
2。存储来自didSelectRowAt委托方法的选定项目数据

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        if selectedItems.contains(items[indexPath.row]) { //check if the selected already contains the items and if contains remove it
            selectedItems.remove(at: selectedItems.firstIndex(of: items[indexPath.row])!)
        } else { // append the required items
            selectedItems.append(items[indexPath.row])
        }
       // ..... other codes here
        
    }
3。打开完成按钮

let requiredText = selectedItems.joined(separator: ",")
// pass this data through delegate method

根据我对这个问题的理解,以下是我的想法:

1。首先设置必要的变量

var items = [String]() // data to display in tableview

var selectedItems = [String]() // here all the selected datas are stored
2。存储来自didSelectRowAt委托方法的选定项目数据

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        if selectedItems.contains(items[indexPath.row]) { //check if the selected already contains the items and if contains remove it
            selectedItems.remove(at: selectedItems.firstIndex(of: items[indexPath.row])!)
        } else { // append the required items
            selectedItems.append(items[indexPath.row])
        }
       // ..... other codes here
        
    }
3。打开完成按钮

let requiredText = selectedItems.joined(separator: ",")
// pass this data through delegate method

不需要为所选项目创建数组。您可以在选择行时简单地调用tableview方法,当您需要获取所选行时,只需调用tableview实例属性。然后,您只需要用逗号连接所选行,并在textview或textfield中使用结果字符串。不要忘了实现item方法




无需为所选项目创建数组。您可以在选择行时简单地调用tableview方法,当您需要获取所选行时,只需调用tableview实例属性。然后,您只需要用逗号连接所选行,并在textview或textfield中使用结果字符串。不要忘了实现item方法





使用Johned func:array.joined(分隔符:“,”)将字符串的数组转换为一个字符串。对于在所选文本上传输,有许多方法可以在屏幕上传输数据,只需搜索即可。好luck@goat_herd如何保存选定的行,然后在下一个视图中分隔它们?也许我应该一步一步地回答我的问题。你有选定行的indexPath对吗?从indexPath你可以从你的数据中获得选定的数据对吗?@goat_herd我已经更新了我的问题,到目前为止,我所拥有的只是如何检查所选行。我看到您已检查数组以保存已检查的索引XPath,对吗?要将字符串的数组Johned func:array.joined(分隔符:“,”)保存到一个字符串中,请使用Johned func。对于在所选文本上传输,有许多方法可以在屏幕上传输数据,只需搜索即可。好luck@goat_herd如何保存选定的行,然后在下一个视图中分隔它们?也许我应该一步一步地回答我的问题。你有选定行的indexPath对吗?从indexPath你可以从你的数据中获得选定的数据对吗?@goat_herd我已经更新了我的问题,到目前为止,我只知道如何检查所选行。我看到您已检查数组以保存检查的indexPath,对吗?我已更新问题中的代码以尝试反映您的建议,我收到以下错误致命错误:索引超出范围:如果selectedItems.contains(items[indexPath.row]),则打开{.I当我试图单击一行并显示复选标记时收到了该错误。checked.remove(在:selectedItems.firstIndex(of:items[indexath.row])!)这一行是错误的,我想应该是selectedItems.remove(在:selectedItems.firstIndex(of:items[indexath.row]))我仍然收到错误消息!我试图删除checked.append(indexath.row)或者重新排列代码行,但仍然显示。对不起!兄弟,您仍在使用checked.remove??您将数据附加到selectedItems中。如果已经存在selectedItems变量,只需完全删除选中的变量。我已更新问题中的代码,以尝试反映您的建议,我收到以下致命错误错误:索引超出范围:在if-selectedItems.contains(items[indexPath.row]){。我在尝试单击一行并显示复选标记时收到该错误。选中。删除(在:selectedItems.firstIndex(of:items[indexPath.row])这一行是错误,我想它应该是selectedItems.remove(在:selectedItems.firstIndex(of:items)[indexPath.row])!)我仍然收到错误消息!我试图删除选中的.append(indexPath.row)或者重新排列代码行,但仍然显示。对不起!兄弟,您仍在使用checked.remove??您在selectedItems中追加了数据。如果已经有selectedItems变量,只需完全删除选中的变量。我是否仍要添加复选标记,然后当我按“完成”时,它会知道哪些行已选中并准备就绪o向前传递?感谢您的帮助!使用您的代码,我一次只能选择1个indexPath,当我按“完成”时,我得到线程1:致命错误:let string=上的索引超出范围我还添加了viewDidLoad方法
tableView.allowsMultipleSelection=true
我添加了!它在控制台中成功打印!但现在我正在尝试o找出origianl问题,即如何在origianl控制器的textView中显示选定的文本。因此,您不知道如何将字符串从一个控制器传递到另一个控制器?我是否仍在添加复选标记,然后当我按“完成”时,它知道哪些行已选定并准备好向前传递?谢谢感谢您的帮助!使用您的代码时,我一次只能选择1个indexPath,当我按下“完成”时,我得到了线程1:致命错误:let string=上的索引超出范围我也添加了viewDidLoad方法
tableView.allowsMultipleSelection=true
I添加了!它成功地在控制台中打印了!但现在我正在尝试找出原版anl问题是如何在原始控制器的textView中显示所选文本。因此,您不知道如何将字符串从一个控制器传递到另一个控制器?