我创建了以下自定义视图:
@interface TNGalleryView : UIView
@property (assign, nonatomic) id <TNGalleryViewDelegate> delegate;
@property (assign, nonatomic) id <TNGalleryViewDataSource> dataSource;
@end
我可以在代码中分配它的委托,但是当我想在 IB 中分配委托时,我不能。我必须将我的代码更改为:
@interface TNGalleryView : UIView
@property (assign, nonatomic) IBOutlet id <TNGalleryViewDelegate> delegate;
@property (assign, nonatomic) IBOutlet id <TNGalleryViewDataSource> dataSource;
@end
然后我可以在 IB 中分配委托和数据源。
为什么如果我想在 IB 中分配委托和数据源,我必须添加 IBOutlet 标识符,但在 apple sdk 中没有任何 IBOutlets?例如这部分 UICollectionView 声明:
NS_CLASS_AVAILABLE_IOS(6_0) @interface UICollectionView : UIScrollView
- (id)initWithFrame:(CGRect)frame collectionViewLayout:(UICollectionViewLayout *)layout; // the designated initializer
@property (nonatomic, retain) UICollectionViewLayout *collectionViewLayout;
@property (nonatomic, assign) id <UICollectionViewDelegate> delegate;
@property (nonatomic, assign) id <UICollectionViewDataSource> dataSource;
没有任何 IBOutlet,但我可以在 IB 中分配 dataSource 并委托给它。