Integration Objective C Protocols with Swift

最后都变了- 提交于 2019-12-10 17:08:20

问题


I am new in swift and i need some help to integrate a component AKPickerView (written in Objective C). link of component: https://github.com/Akkyie/AKPickerView

But i have no success, because there is a protocol: AKPickerViewDelegate that don't work in Swift:

@class AKPickerView;

@protocol AKPickerViewDelegate <NSObject>
@optional
- (NSString *)pickerView:(AKPickerView *)pickerView titleForItem:(NSInteger)item;
- (NSUInteger)numberOfItemsInPickerView:(AKPickerView *)pickerView;
- (void)pickerView:(AKPickerView *)pickerView didSelectItem:(NSInteger)item;
@end

In Swift i wrote this code:

class ViewController: UIViewController, AKPickerViewDelegate {

var pickerView : AKPickerView = AKPickerView()
var titles     : NSArray = ["Janeiro","Fevereiro","Março","Abril","Maio"]

...

And I implimented this methods:

func numberOfItemsInPickerView(pickerView : AKPickerView!) -> Int{

    return self.titles.count
}


func pickerView(pickerView: AKPickerView, titleForItem item : NSInteger) -> NSString {

    return self.titles[item] as NSString
}

But the compiler show this error:

Type 'ViewController' does not conform to protocol 'AKPickerViewDelegate'

Appreciate some help Thanks!


回答1:


As i have seen in link AKPickerViewDelegate has required method.

@protocol AKPickerViewDelegate <NSObject>
@required
- (NSUInteger)numberOfItemsInPickerView:(AKPickerView *)pickerView;
- (NSString *)pickerView:(AKPickerView *)pickerView titleForItem:(NSInteger)item;
@optional
- (void)pickerView:(AKPickerView *)pickerView didSelectItem:(NSInteger)item;
@end

So in swift you need to implement them.Implement these methods as below and it will remove the error

func numberOfItemsInPickerView(pickerView: AKPickerView!) -> UInt {

    return self.titles.count
}

func pickerView(pickerView: AKPickerView!, titleForItem item: Int) -> String! {

   return self.titles[item]
}

Note you also need to add them in Bridging Header.Just write this #import "AKPickerView.h" in Swifter-Bridging-Header.h



来源:https://stackoverflow.com/questions/24981568/integration-objective-c-protocols-with-swift

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!