簡體   English   中英

Swift 4為什么Delegate無法運作

[英]Swift 4 Why Delegate is not working

在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
}

但是永遠不會調用此函數。 我以前使用過代表,很好。 或者我只是累了,看不到我做錯了什么...

SearchResultTableViewController的代碼中創建ViewController某個地方,必須設置委托的值:

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

如果要顯示ViewController的SearchResultTableViewController之后,執行類似這樣的操作是否更容易:

func GoToSearchResultVC(result: Any) {
    let searchVC = SearchResultTableViewController()
    searchVC.results = results
    self.present(searchVC, animated: true, completion: nil)
}

委托設計模式是從其他類接收事件,如果只想設置一個變量,這種方式對我來說更好

順便說一句,檢查您的代碼,您在創建SearchResultsVC之前先調用委托

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM