ios - 委托(delegate)函数未被调用 iOS Swift

标签 ios swift

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

当我尝试在 LanguageSelectionTVC 中调用方法 self.delegate?.setSelectedLangauges(self.languagesSpokenArray) 时,它不会调用方法 setSelectedLangauges 类内 Registration 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 移动到 LanguageSelectionTVC。下面的 tableView 方法在我的 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 访问 LanguageSelectionTVC 以设置它的 delegate。因此,覆盖 RegistrationVC 中的prepare(for:sender:)

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

关于ios - 委托(delegate)函数未被调用 iOS Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44734911/

相关文章:

iphone - 仍然对 Objective C 中的内存管理感到好奇

iOS 7 使用 UIPickerView 打开 UITableViewController 速度慢

ios - 在 Swift 中将图层样式组合到多个 UIButton

swift - 如何从泛型函数调用 Swift 协议(protocol)的静态属性?

javascript - Magnific Popup 无法在移动设备上运行

ios - UINavigationBar 为 UIScrollView 注册触摸

ios - 在检索发件人 ID 的 FCM token 之前未设置 APNS 设备 token - React Native Firebase

ios - @IBDesignables - "the agent crashed"但应用程序仍然有效(大部分时间)

swift - 解码 Firebase base64 Swift 2.0

ios - iMessage 分机 : Getting bundle nil from different target