Ios Swift 4为什么代表不工作

Ios Swift 4为什么代表不工作,ios,swift,delegates,Ios,Swift,Delegates,在ViewController中: protocol SearchResultDelegate { func SendDataToResultController(_ result: [SkelbimasModel]) } class ViewController: UIViewController, UISearchBarDelegate, CLLocationManagerDelegate, MKMapViewDelegate, AddSkelbimas { @IBOut

在ViewController中:

protocol SearchResultDelegate {
    func SendDataToResultController(_ result: [SkelbimasModel])
}

class ViewController: UIViewController, UISearchBarDelegate, CLLocationManagerDelegate, MKMapViewDelegate, AddSkelbimas {

    @IBOutlet weak var Label: UILabel!
    @IBOutlet weak var SearchBar: UISearchBar!
    // @IBOutlet weak var boomFilter: BoomMenuButton!
   // @IBOutlet weak var Label: UILabel!
    @IBOutlet weak var CategoryView: UIView!
    @IBOutlet weak var Map: MKMapView!
    @IBOutlet weak var bmb: BoomMenuButton!

    var Delegate:SearchResultDelegate?
.........

     //ijungimiame lentele su paieskos rezultatais
            if(result.count > 1) {
                Delegate?.SendDataToResultController(result)
                GoToSearchResultVC(result)

            }
函数GoToSearchResultVC(result)在打开新控制器时被调用 在这种情况下,新控制器代码为:

import UIKit

class SearchResultTableViewController: UITableViewController, SearchResultDelegate {
.....

func SendDataToResultController(_ result: [SkelbimasModel]) {
    print("result count: \(result.count)")
    results = result
}
但是这个函数永远不会被调用。
我以前使用过代理,很好。或者我只是累了,看不出哪里做错了…

SearchResultableViewController
的代码中创建
ViewController
的某个地方,您必须设置代理的值:

let viewController = ViewController()
viewController.Delegate = self
// present viewController

searchresultableviewcontroller
中的代码中创建
ViewController
的某个地方,您必须设置代理的值:

let viewController = ViewController()
viewController.Delegate = self
// present viewController

如果从ViewController显示SearchResultableViewController之后的内容,执行以下操作是否更容易:

func GoToSearchResultVC(result: Any) {
    let searchVC = SearchResultTableViewController()
    searchVC.results = results
    self.present(searchVC, animated: true, completion: nil)
}
委托设计模式是从其他类接收事件,如果您只想设置一个变量,这种方式对我来说更好


顺便说一句,检查您的代码,您在创建SearchResultsVC之前首先调用代理,如果您在ViewController中的SearchResultableViewController之后显示,执行以下操作是否更容易:

func GoToSearchResultVC(result: Any) {
    let searchVC = SearchResultTableViewController()
    searchVC.results = results
    self.present(searchVC, animated: true, completion: nil)
}
委托设计模式是从其他类接收事件,如果您只想设置一个变量,这种方式对我来说更好


顺便说一句,检查您的代码,在创建SearchResultsVC之前,您首先调用代理。是否将代理分配给self?例如,在视图中没有加载。不确定如何在视图控制器之间传递委托。首先检查委托是否为零?是否将委托分配给self?例如,在视图中没有加载。不确定如何在视图控制器之间传递委托。首先检查委托是否为零?