【发布时间】:2016-06-07 16:38:07
【问题描述】:
我有一个 TableviewController:TableViewController.m,它有动态单元格。
我已将一个单元格(只有一个)子类化为:RegisterTableViewCell.m/.h,在情节提要的此单元格中有一个 UIButton,并在 TableViewcell.m 中为相同的单元格创建了一个插座。
我在 TableViewcell 中声明了一个自定义协议,以获取 TableViewController.m 中按钮上的单击事件。我想在单击此按钮时进行转场。
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);
}
问题:
在 TableViewController.m 中没有调用我的 didClickOnCellAtIndex 函数。 即使是 RegisterTableViewCell.m 中的 didTapButton func,'if' 条件也不会执行,-“响应选择器 = 0”。
另外,我刚刚对其中一个单元格进行了子类化,我在 cellForRowAtIndexPath 中获取了它的实例,但只有在显示表视图时才调用 cellForRowAtIndexPath。
在选择此单元格上的时间按钮时,不会清除 ref RegisterTableViewCell *cellreg 及其属性 cellreg.delegate 吗?
我的全部目标是在某些选定的单元格(现在只说 1)中放置一个 uibutton 到右端,当用户单击单元格或此按钮(最好是单元格)时,我想做一个弹出式演示文稿 segue vc 带有指向按钮的弹出箭头。
对于这个问题,我的 obj 是在 TableViewController 的 RegisterTableViewCell 中的按钮上获取单击事件,以便我可以从这里调用 prepareforsegue 与发件人。
我被困在这个问题上。请帮忙。
【问题讨论】:
标签: ios objective-c uitableview uipopovercontroller