У меня есть TableviewController: TableViewController.m, у него есть динамические ячейки.
Я подклассифицировал одну ячейку (только одну) в: RegisterTableViewCell.m/.h, имеет UIButton в этой ячейке в раскадровке и создал выход для этого же в TableViewcell.m.
Я декалировал специальный протокол в TableViewcell, чтобы получить кнопку click на кнопке в TableViewController.m. Я хочу сделать segue по щелчку этой кнопки.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);
}
Задача:
My didClickOnCellAtIndex func in not called in TableViewController.m. Даже didTapButton func в RegisterTableViewCell.m, условие «if» не выполняется, - «отвечает на селектор = 0».
Кроме того, я просто подклассифицировал одну из ячеек, экземпляр которых я получаю в cellForRowAtIndexPath, но cellForRowAtIndexPath вызывается только после отображения представления таблицы.
Не будет ref RegisterTableViewCell * cellreg и его свойство cellreg.delegate, очищенное кнопкой времени в этой ячейке, выбрано?
Вся моя цель - поместить uibutton в некоторые выделенные ячейки (пока скажем только 1) на правый конец, и когда пользователь нажимает на ячейку или эту кнопку (предпочтительно ячейку), я хочу сделать презентацию seop vc с стрелкой, указывающей на кнопку.
Для этого вопроса мой объект должен получить событие щелчка на кнопке в RegisterTableViewCell в TableViewController, чтобы я мог вызвать prepareforsegue с отправителем отсюда.
Я застрял в этом. Пожалуйста помоги.
Отлично :) Большое спасибо, я спас мой день. Мой ответ был в моем самом вопросе. утверждены и приняты в качестве ответа. – CodeTry
Рад помочь вам. – Nick
Ячейка никогда не может быть нулевой, если ее установить из раскадровки с идентификатором. Таким образом, вы можете удалить эти 3 строки. –