UIPanGestureRecognizer stateEnded在CustomCell类中通知MainViewController

时间:2014-01-18 23:57:36

标签: ios objective-c uitableview

我的应用 MainViewController 使用来自 CustomCell 的自定义UITableView的{​​{1}}。使用UITableViewCells,用户可以向左或向右滑动单元格。幻灯片后,UIPanGestureRecognizer和幻灯片方向存储到textLabel.text

动画代码为 CustomCell ,效果正常。

当CustomCell的static NSStrings

时, MainViewController 怎么知道或被通知

CustomCell

recognizer.state == UIGestureRecognizerStateEnded

MainViewController

static NSString *cellAction = NULL; // textLabel.text

static NSString *slideTo = NULL; // slide direction
-(id)initWithStyle{

    UIGestureRecognizer* recognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];

    [self addGestureRecognizer:recognizer];
}

-(void)handlePan:(UIPanGestureRecognizer *)recognizer{

}

在此工作之后,我计划使用 CustomCell 中的2个静态字符串来执行从 MainViewController AnotherViewController 的模态segue。滑动动作后我只需要2个字符串。

1 个答案:

答案 0 :(得分:0)

添加此代码

UIGestureRecognizer* recognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];

[self addGestureRecognizer:recognizer];

在您的MainViewController中创建单元格之后,就像这样:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

     CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:ident forIndexPath:indexPath];

     //more of your existing code here

     UIGestureRecognizer* recognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];

     [self addGestureRecognizer:recognizer];
     return cell;
}

将handlePan:方法移动到MainViewController。

除非您有充分的理由在单元类中使用handlePan:方法,否则最好添加它在MainViewController中(如果您想避免创建/设置委托或使用块)