我有一个TableviewController:TableViewController.m,这有动态单元格。
我已经将一个单元格(只有一个)子类化为:RegisterTableViewCell.m/.h,在故事板中的此单元格中有一个UIButton,并在TableViewcell.m中为此创建了一个出口。
我已经在TableViewcell中定制了一个自定义协议来获取TableViewController.m中按钮上的点击事件。我想点击这个按钮做一个继续。TableView没有响应TableViewcell自定义协议
RegisterTableViewCell.h
@protocol CellDelegate <NSObject>
-(void)didClickOnCellAtIndex:(NSInteger)cellIndex withData:(id)data;
@end
@property (weak,nonatomic) id<CellDelegate>delegate;
@property (assign,nonatomic) NSInteger cellIndex;
@property (weak, nonatomic) IBOutlet UIButton *PopoverAnchorButton;
RegisterTableViewCell.m
@synthesize PopoverAnchorButton = _PopoverAnchorButton;
- (void)awakeFromNib {
// Initialization code
[self.PopoverAnchorButton addTarget:self action:@selector(didTapButton:) forControlEvents:UIControlEventTouchUpInside];
//[self.PopoverAnchorButton
}
- (void)didTapButton:(id)sender{
NSLog(@"Anchor Button Pressed");
NSLog(@"self.delegate %d ", [self.delegate isEqual:nil]);
NSLog(@"responds to selector %d ", [self.delegate respondsToSelector:@selector(didClickOnCellAtIndex:withData:)]);
if(self.delegate && [self.delegate respondsToSelector:@selector(didClickOnCellAtIndex:withData:)]){
[self.delegate didClickOnCellAtIndex:_cellIndex withData:@"abc"];
}
}
TableViewController.h
@interface SideBarTableViewController : UITableViewController <UIPopoverPresentationControllerDelegate ,CellDelegate>
TableViewController.m
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *cellIdentifier = [menuItems objectAtIndex:indexPath.row];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
RegisterTableViewCell *cellreg = [[RegisterTableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"register"];
cellreg.delegate = self;
cellreg.cellIndex = indexPath.row;
return cell;
}
-(void)didClickOnCellAtIndex:(NSInteger)cellIndex withData:(id)data
{
NSLog(@"cell at index %ld clicked",(long)cellIndex);
}
问题:
我的didClickOnCellAtIndex func未在TableViewController.m中调用。 即使在RegisterTableViewCell.m中的didTapButton函数,'if'条件未被执行, - “响应selector = 0”。
此外,我刚刚subclassed其中一个单元格,其实例我在cellForRowAtIndexPath,但cellForRowAtIndexPath只在显示表视图时调用。
将不会引用RegisterTableViewCell * cellreg及其属性cellreg.delegate被该单元格上的时间按钮清除吗?
我的整个目标是在一些选定的单元格(现在说只是1)到右端,当用户单击单元格或此按钮(最好是单元格)时,我想做一个popover演示文稿继续带弹出箭头指向按钮的vc。
对于这个问题,我的obj是在TableViewController的RegisterTableViewCell中的按钮上获得点击事件,以便我可以从这里调用prepareforsegue与发件人。
我被困在这。请帮忙。
完美:)非常感谢,你救了我的一天。我的回答本身就是我的问题。已经投票并接受为答案。 – CodeTry
很高兴为您效劳。 – Nick
使用标识符从故事板设置时,单元格永远不会为零。所以你实际上可以删除这3条线。 –