如何在目标c中的同一文件(.m)中调用多个类的协议?

时间:2015-05-28 10:11:16

标签: ios objective-c protocols multiple-instances

我有一个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()方法。

我尝试创建协议但在各方面都失败了。有人可以帮助我知道如何定义协议来实现我的目标吗?

1 个答案:

答案 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];