我有一个ObjC接口,它定义了属性controller
,如下所示:
@protocol STXFeedPhotoCellDelegate;
@protocol STXLikesCellDelegate;
@protocol STXCaptionCellDelegate;
@protocol STXCommentCellDelegate;
@protocol STXUserActionDelegate;
@interface STXFeedTableViewDelegate : NSObject <UITableViewDelegate>
@property (nonatomic) BOOL insertingRow;
@property (weak, nonatomic) id <STXFeedPhotoCellDelegate, STXLikesCellDelegate, STXCaptionCellDelegate, STXCommentCellDelegate, STXUserActionDelegate> controller;
@property (nonatomic) NSArray *comments;
- (instancetype)initWithController:(id<STXFeedPhotoCellDelegate, STXLikesCellDelegate, STXCaptionCellDelegate, STXCommentCellDelegate, STXUserActionDelegate>)controller;
- (void)reloadAtIndexPath:(NSIndexPath *)indexPath forTableView:(UITableView *)tableView;
- (CGFloat)calculateHeightForCell:(UITableViewCell *)cell;
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
@end
我已将此头文件添加到桥接头。
然后我在Swift中定义了一个子类STXFeedTableViewDelegate
。但是,此Swift类无法访问super.controller
属性。但是,它可以访问超类STXFeedTableViewDelegate
的任何其他属性。我怀疑其背后的原因是因为controller
属性被定义为id<Protocol>
。
我很感激有人可以提供一种方法让Swift从ObjC类中识别这个属性。
更新:使用Swift代码:
class PostTableViewDelegate: STXFeedTableViewDelegate {
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
let controller = self.controller
let controller2 = super.controller
//more class code below
let controller = self.controller
因PostTableViewDelegate does not have a member called controller
let controller2 = super.controller
因STXFeedTableViewDelegate does not have a member called controller