在Interface Builder中连接子类的自定义委托以进行控制

bra*_*ipt 3 delegates objective-c storyboard ios

我有一个自定义控件与自定义委托:

@class MyButtonSubclass;
@protocol MyButtonSubclass Delegate <NSObject>
@optional
- (void)delegateMethod:(NSString *)param;

@end

@interface MyButtonSubclass : UIButton

@property (nonatomic, weak) id < MyButtonSubclass Delegate> delegate;
@property (nonatomic, strong) NSString* param;

@end
Run Code Online (Sandbox Code Playgroud)

我在自定义子类的Storyboard中创建了一个按钮:

有没有办法让自定义委托出现在Storyboard的可连接属性列表中?

bra*_*ipt 5

好哇!答案很简单地盯着我.该delegate(或dataSource)定义需要包括IBOutlet:

@class MyButtonSubclass;
@protocol MyButtonSubclass Delegate <NSObject>
@optional
- (void)delegateMethod:(NSString *)param;

@end

@interface MyButtonSubclass : UIButton

@property (nonatomic, weak) IBOutlet id < MyButtonSubclass Delegate> delegate;
//                              ^ This!       
@property (nonatomic, strong) NSString* param;

@end
Run Code Online (Sandbox Code Playgroud)