如何符合Swift中现有的.h文件中的目标c协议?
我正在尝试在Swift中重新创build一个Ray Wenderlich教程,但是同时使用Swift和Objective C。主要部分(即视图控制器和模型)在Swift中完成,并且使用桥接头来处理现有的.h和.m类。
我有麻烦试图让我的SWIFT视图控制器符合obj-c委托。
在我的.h文件中我有:
@class RWTRateView; @protocol RWTRateViewDelegate - (void)rateView:(RWTRateView *)rateView ratingDidChange:(float)rating; @end @interface RWTRateView : UIView ... @property (assign) id <RWTRateViewDelegate> delegate; @end
在我的swift文件中,我有:
class DetailViewController: UIViewController, UITextFieldDelegate, RWTRateViewDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate { @IBOutlet var rateView : RWTRateView ... func configureView() { // Update the user interface for the detail item. if let detail:RWTScaryBugDoc = self.detailItem as? RWTScaryBugDoc { if let rv = self.rateView { rv.notSelectedImage = UIImage(named: "shockedface2_empty.png") rv.halfSelectedImage = UIImage(named: "shockedface2_half.png") rv.fullSelectedImage = UIImage(named: "shockedface2_full.png") rv.editable = true rv.maxRating = 5 rv.delegate = self as RWTRateViewDelegate rv.rating = detail.data.rating! self.titleField.text = detail.data.title self.imageView.image = detail.fullImage } } } ... func rateView(rateView:RWTRateView!, ratingDidChange rating:Float!) ->Void { if let detail = self.detailItem as? RWTScaryBugDoc { detail.data.rating = rating } } ... }
出于某种原因,我收到一条错误消息说,types“DetailViewController”不符合协议'RWTRateViewDelegate',我不太清楚为什么。
完整的代码在https://github.com/dwmchan/ScaryBugsSwift 。
希望对此有任何反馈,因为我已经花了最后3天在网上寻找答案,但无法find任何这方面的东西。
你有:
func rateView(rateView:RWTRateView!, ratingDidChange rating:Float!) ->Void {
我的Xcode 6(testing版2)自动完成这一行
func rateView(rateView: RWTRateView!, ratingDidChange rating: CFloat) {
请注意,第二个参数的types是CFloat
,而不是Float!
。
- 重构iOS7和iOS8的UITableView委托
- 警告:尝试使用SLComposeViewController将不在窗口层次结构中的*视为*
- 添加到以前保存的NSUserDefaults
- prepareForSegue和代表
- applicationWillResignActive和setBrightness不工作?
- iOS CoreBluetooth:centralManager:didConnectPeripheral / didFailToConnectPeripheral:没有被调用
- 代表没有设置
- ViewDidLoad在AppDelegate didFinishLaunchingWithOptions执行之前运行!
- iOS我可以把所有的委托方法放在另一个类上。 将代表inheritance到视图控制器