Monday, June 1, 2015

IOS: Delegate and Datasource Swift and objective-c interaction

Delegate will be defined in the class from where the event need to be triggered
For example:
if class name is MyClass in swift

delegate will be defined as

@objc protocol MyClassDelegate: NSObjectProtocol {
    func myClass(myclass: MyClass, myFunction parameter: Parameter)
    

}

if some data is required in the class, the data source is defined as
@objc protocol MyClassDataSource: class {
     func myClass(myClass: MyClass, myFunction parameter: Parameter) -> data?  // like UUImage
}

------- in class implementation

var delegate: MyClassDelegate?
var dataSource : MyClassDataSource?

self.delegate?.myClass(self, myFunction: whateverParameter)
self.dataSource?.myClass(self)


----- using in objective-c

#pragma mark - AudioNoteViewModelControllerDelegate
@interface ObjectivecClass (MyClassDelegate) <AudioNoteViewModelControllerDelegate>
@end
@implementation ObjectivecClass (MyClassDelegate)
-(void) myClass:(MyClass *) myclass myFunction:(Parameter *) parameter  {
}
@end

#pragma mark - AudioNoteViewModelControllerDataSource
@interface ObjectivecClass (MyClassDataSource) <AudioNoteViewModelControllerDataSource>
@end
@implementation ObjectivecClass (MyClassDataSource)
-(Data *) myClass:(MyClass *) myclass myFunction: (Parameter *) parameter {
}
@end

-- in ObjectivecClass  interface

@property (nonatomic, strongMyClass * myClass;


--- in ObjectivecClass implementation viewDidLoad

     _myClass = [MyClass new];
    _myClass.delegate = self;
    _ _myClass.dataSource = self;

No comments:

Post a Comment