Ios 未调用委托函数

Ios 未调用委托函数,ios,swift,Ios,Swift,在这里,我试图使用协议将值从一个类LanguageSelectionTVC传递到另一个类RegistrationVC 当我尝试调用方法self.delegate?.setselectedlanguages(self.languagesSpokenArray)insidelanguagesselectiontvc时,它不会调用类setselectedlanguages注册VC中的方法 protocol LanguageSelectionTVCProtocol { func setSelec

在这里,我试图使用协议将值从一个类
LanguageSelectionTVC
传递到另一个类
RegistrationVC

当我尝试调用方法
self.delegate?.setselectedlanguages(self.languagesSpokenArray)
inside
languagesselectiontvc
时,它不会调用类
setselectedlanguages
注册VC中的方法

protocol LanguageSelectionTVCProtocol {
    func setSelectedLangauges(_ valueSent: [String])
}


class LanguageSelectionTVC: UITableViewController {
    var delegate                    : LanguageSelectionTVCProtocol? = nil

   func saveAndClose() {
        self.delegate?.setSelectedLangauges(self.languagesSpokenArray)
        dismiss()
   }

}


class RegistrationVC:           UIViewController,
                                UITableViewDelegate,
                                UITableViewDataSource,
                                LanguageSelectionTVCProtocol{

    func setSelectedLangauges(_ valueSent: [String]){  
         self.showLanguagesSpoken(valueSent)
    }
}
RegistrationVC
移动到
language选择TVC
。下面的
tableView
方法位于my
RegistrationVC

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let row     = indexPath.row
        let section = indexPath.section

        let currentCell = tableView.cellForRow(at: indexPath) as! UITableViewCell
        if section == 4 && row == 0 {
            // The user has clicked on languages spoken cell
            self.performSegue(withIdentifier: "LanguageSelectionTVC", sender: self)
        }
    }

您需要从
preparForSegue
访问
language selection tvc
,以设置它的
delegate
。因此
覆盖
注册VC
中的
准备(发件人:)

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "LanguageSelectionTVC" { 
        let vc = segue.destination as! LanguageSelectionTVC
        vc.delegate = self
    }
}

您需要从
preparForSegue
访问
language selection tvc
,以设置它的
delegate
。因此
覆盖
注册VC
中的
准备(发件人:)

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "LanguageSelectionTVC" { 
        let vc = segue.destination as! LanguageSelectionTVC
        vc.delegate = self
    }
}

您需要将RegistrationVC中的委托设置为LanguageSelectionTVC,例如,您可以在执行segue时进行设置:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let targetVC = segue.destination as! LanguageSelectionTVC
    targetVC.delegate = self
}

您需要将RegistrationVC中的委托设置为LanguageSelectionTVC,例如,您可以在执行segue时进行设置:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let targetVC = segue.destination as! LanguageSelectionTVC
    targetVC.delegate = self
}

您需要设置委托。请看下面两个视图控制器之间的数据传递示例

import UIKit
protocol SenderViewControllerDelegate 
{
    func messageData(str1:NSString)
}
class tableViewController: UIViewController, UITableViewDelegate, 
UITableViewDataSource 
{
var delegate: tableViewController?
override func viewDidLoad() 
{
    super.viewDidLoad()
    self.delegate?.messageData(str1: “Hello world”)
}
}
在下面的控制器中接收数据

import UIKit
class HomeViewController: UIViewController ,SenderViewControllerDelegate {
    override func viewDidLoad() {
    super.viewDidLoad()
     let objtableview = tableViewController(nibName: "tableViewController",bundle: nil)
        objtableview.delegate = self
        self.navigationController?.pushViewController(objtableview, animated: true)
    }
    func messageData(str1:NSString){
        print(str1)
    }
}

您需要设置委托。请看下面两个视图控制器之间的数据传递示例

import UIKit
protocol SenderViewControllerDelegate 
{
    func messageData(str1:NSString)
}
class tableViewController: UIViewController, UITableViewDelegate, 
UITableViewDataSource 
{
var delegate: tableViewController?
override func viewDidLoad() 
{
    super.viewDidLoad()
    self.delegate?.messageData(str1: “Hello world”)
}
}
在下面的控制器中接收数据

import UIKit
class HomeViewController: UIViewController ,SenderViewControllerDelegate {
    override func viewDidLoad() {
    super.viewDidLoad()
     let objtableview = tableViewController(nibName: "tableViewController",bundle: nil)
        objtableview.delegate = self
        self.navigationController?.pushViewController(objtableview, animated: true)
    }
    func messageData(str1:NSString){
        print(str1)
    }
}

您设置代理的位置显示您如何从
RegistrationVC
移动到
LanguageSelectionTVC
,您必须将代理设置在某个位置。@NiravD更新了我的问题,显示我如何从
RegistrationVC
移动到
LanguageSelectionTVC
@user44776检查我下面的解决方案,在哪里设置代理代理显示您如何从
RegistrationVC
移动到
LanguageSelectionTVC
您必须将代理设置在某个位置。@NiravD更新了我的问题,以显示我如何从
RegistrationVC
移动到
LanguageSelectionTVC
@user44776查看我的下面solution@user44776欢迎伴侣:)@user44776欢迎伴侣:)