我有一个UITableViewCell
的子类(Say,MyTableViewCell
)。
在MyTableViewCell
的实现中,我有一个UIView
的子类(Say,MyView
),在那里我绘制了所有需要的东西。我已将MyView
分配给MyTableViewCell
的内容视图。
请参阅代码以获得更好的说明:
MyTableViewCell.h
@interface MyTableViewCell : UITableViewCell
{
...
...
}
@property ...
@property ...
@end
MyTableViewCell.m
#import "MyTableViewCell.h"
@interface MyView : UIView //Interface of MyView
{
MyTableViewCell *myCell;
...
}
@end
@implementation MyView //Implementation of MyView
-(id)initWithFrame:(CGRect)frame cell:(MyTableViewCell *)cell
{
if (self = [super initWithFrame:frame])
{
myCell = cell;
}
return self;
}
-(void)drawRect:(CGRect)rect
{
... //Drawing stuffs
}
...
...
-(void)eventOccured
{
//I want to call a method doNeedful() of MyTableViewCell here.
}
@end
@interface MyTableViewCell() //private variables of cell
{
UIView *myView;
}
@end
@implementation MyTableViewCell
@synthesize ...
-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self)
{
myView = [[MyView alloc] initWithFrame:self.contentView.bounds cell:self];
...
[self.contentView addSubview:myView];
}
return self;
}
...
...
-(void)doNeedful
{
}
@end
问题:
我想在调用doNeedful
的{{1}}()时调用MyTableViewCell
班级中的MyView
()方法。
我尝试创建协议但在各方面都失败了。有人可以帮助我知道如何定义协议来实现我的目标吗?
答案 0 :(得分:0)
而不是此代码
@interface MyView : UIView //Interface of MyView
{
MyTableViewCell *myCell;
...
}
添加以下代码
@interface MyView : UIView //Interface of MyView
@property(nonatomic,assign) id mycell// It should be assign or weak bcoz cell is the parent
在您的方法中
-(void)eventOccured
{
[self.myCell doNeedful];
}
分配时
myView = [[MyView alloc] initWithFrame:self.contentView.bounds cell:self];
myview.myCell = self;
[self.contentView addSubview:myView];