Ios Swift 4为什么代表不工作
在ViewController中:Ios Swift 4为什么代表不工作,ios,swift,delegates,Ios,Swift,Delegates,在ViewController中: protocol SearchResultDelegate { func SendDataToResultController(_ result: [SkelbimasModel]) } class ViewController: UIViewController, UISearchBarDelegate, CLLocationManagerDelegate, MKMapViewDelegate, AddSkelbimas { @IBOut
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?例如,在视图中没有加载。不确定如何在视图控制器之间传递委托。首先检查委托是否为零?