我有一個viewcontroller
在Swift
,運作良好,我想從Objective-C
類使用它。我的問題是我不知道如何使用它。如何從Objective-C使用委託Swift?
我嘗試在我的主要Objective-C類的頭文件中添加委託。
@interface MainViewController : UIViewController <PlanningSearchDelegate>
但我認爲它是一個快速類,它不起作用。錯誤是:
無法爲PlanningSearchDelegate
發現協議聲明之後,我試圖在迅速類中添加@objc
字。
import UIKit
@objc protocol PlanningSearchDelegate
{
func planningSearchDidSelectResult(_ result:DALSearchResult)
}
class PlanningSearchViewController: UIViewController
{
}
extension PlanningSearchViewController: UITableViewDelegate
{
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
let result = _results[indexPath.row]
delegate?.planningSearchDidSelectResult(result)
}
}
但是我有一個錯誤消息:
方法不能是@objc協議中的一員,因爲該參數的類型不能在Objective-C來表示。
我把delegate = self
主Objective-C
類的prepareForSegue
沒有成功:
else if ([segue.identifier isEqualToString:@"showSearchViewSegue"])
{
PlanningSearchViewController *searchViewController = segue.destinationViewController;
searchViewController.delegate = self;
}
的錯誤信息是:
住宅「代表」的類型PlanningSearchViewController *」的」對象未找到
這是DALSearchResult
類:
進口基金會
class DALSearchResult
{
var contactId: Int
var firstname: String
var lastname: String
var email: String
var phone: String
var city: String
var registrationId: Int?
var slotId: Int?
var vehicleId: Int?
var startDate: Date?
var vehicleName: String?
init(contactId:Int, firstname:String, lastname:String, email:String, phone:String, city:String)
{
self.contactId = contactId
self.firstname = firstname
self.lastname = lastname
self.email = email
self.phone = phone
self.city = city
}
convenience init(registrationId:Int, slotId:Int, vehicleId:Int, contactId:Int, firstname:String, lastname:String, email:String, phone:String, city:String, startDate:Date, vehicleName: String)
{
self.init(contactId: contactId, firstname: firstname, lastname: lastname, email: email, phone: phone, city: city)
self.registrationId = registrationId
self.vehicleId = vehicleId
self.slotId = slotId
self.startDate = startDate
self.vehicleName = vehicleName
}
}
任何人都有想法?
在此先感謝。
什麼是DALSearchResult? –
這是一個我在swift中調用的類,其中包含有關人員搜索的信息(名字,姓氏,電話號碼,電子郵件等等) – Claudio
也添加/顯示班級代碼。 –