Reputation: 1275
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!
Upvotes: 4
Views: 758
Reputation: 37189
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
Upvotes: 3