使用Swift集成Objective C协议
我是swift的新手,我需要一些帮助来集成一个组件AKPickerView(用Objective C编写)。 组件链接: https : //github.com/Akkyie/AKPickerView
但我没有成功,因为有一个协议: AKPickerViewDelegate在Swift中不起作用:
@class AKPickerView; @protocol AKPickerViewDelegate @optional - (NSString *)pickerView:(AKPickerView *)pickerView titleForItem:(NSInteger)item; - (NSUInteger)numberOfItemsInPickerView:(AKPickerView *)pickerView; - (void)pickerView:(AKPickerView *)pickerView didSelectItem:(NSInteger)item; @end
在Swift中我编写了这段代码:
class ViewController: UIViewController, AKPickerViewDelegate { var pickerView : AKPickerView = AKPickerView() var titles : NSArray = ["Janeiro","Fevereiro","Março","Abril","Maio"] ...
我赞扬了这种方法:
func numberOfItemsInPickerView(pickerView : AKPickerView!) -> Int{ return self.titles.count } func pickerView(pickerView: AKPickerView, titleForItem item : NSInteger) -> NSString { return self.titles[item] as NSString }
但编译器显示此错误:
Type 'ViewController' does not conform to protocol 'AKPickerViewDelegate'
感谢一些帮助谢谢!
正如我在链接AKPickerViewDelegate
看到的AKPickerViewDelegate
需要方法。
@protocol AKPickerViewDelegate @required - (NSUInteger)numberOfItemsInPickerView:(AKPickerView *)pickerView; - (NSString *)pickerView:(AKPickerView *)pickerView titleForItem:(NSInteger)item; @optional - (void)pickerView:(AKPickerView *)pickerView didSelectItem:(NSInteger)item; @end
所以在swift中你需要实现它们。如下所示实现这些方法,它将删除错误
func numberOfItemsInPickerView(pickerView: AKPickerView!) -> UInt { return self.titles.count } func pickerView(pickerView: AKPickerView!, titleForItem item: Int) -> String! { return self.titles[item] }
注意你还需要在Bridging Header中添加它们。 #import "AKPickerView.h"
在Swifter-Bridging-Header.h
编写#import "AKPickerView.h"