Как создать segue для ViewControllerB из TableViewCell.xib использование делегатов цель c?

Я учусь,
очень нужна помощь!

У меня есть 2 ViewControllers: ViewControllerAwith UITableViewTableViewCell .h .m .xibфайлами) и ViewControllerB.

У меня есть» кнопка подключения»- (IBAction)goButton:(id)sender;CustomCell.

Как перейти к ViewControllerBTableViewCellиспользованию делегатов?

TableViewCell.ч

#import <UIKit/UIKit.h>

@class TableViewCell;
@protocol TableViewCellDelegte <NSObject>
@required
- (void) customCell:(TableViewCell *)cell button1Pressed:(UIButton *)btn;
@end

@interface TableViewCell : UITableViewCell
- (IBAction)Button:(id)sender;
@property (weak, nonatomic) id<TableViewCellDelegte>delegate;
@end

TableViewCell.м

#import "TableViewCell.h"

@implementation TableViewCell
@synthesize delegate;
- (void) customCell:(TableViewCell *)cell button1Pressed:(UIButton *)btn;{

}

- (IBAction)Button:(id)sender {
}

ViewController.ч

#import <UIKit/UIKit.h>
#import "TableViewCell.h"

@interface ViewController : UIViewController <UITableViewDataSource, UITableViewDelegate,TableViewCellDelegte>
@property (weak, nonatomic) IBOutlet UITableView *tableView;
@property (nonatomic, assign) id delegate;
@end

ViewController.м

#import "ViewController.h"
#import "TableViewCell.h"

@interface ViewController ()

@end

@implementation ViewController
@synthesize delegate;

- (void)viewDidLoad {
  [super viewDidLoad];

 [self setAllTableData];
  _tableView.delegate = self;
  _tableView.dataSource = self;
  _tableView.backgroundColor = [UIColor redColor];
  _tableView.rowHeight = 100;

}
- (void) setAllTableData {
  //[_tableView registerNib:[UINib nibWithNibName:@"TableViewCell" bundle:nil] forCellReuseIdentifier:@"TableViewCell"];
  UINib *cellNib = [UINib nibWithNibName:@"TableViewCell" bundle:nil];
  [self.tableView registerNib:cellNib forCellReuseIdentifier:@"TableViewCell"];
}

- (NSInteger) numberOfSectionsInTableView:(UITableView *)tableView{
  return 1;
}
-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
  return 1;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
  //UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"TableViewCell"];
  //static NSString *CellIdentifier = @"TableViewCell";

  UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"TableViewCell" forIndexPath:indexPath];
  if (!cell) {
    cell = [[TableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"TableViewCell"];
        cell.delegate = self;
  }

  return cell;

}
- (void) customCell:(TableViewCell *)cell button1Pressed:(UIButton *)btn{
  NSLog(@"DELEGATE IS WORK");
}

@end

ошибка: cell.delegate = self;свойство ‘delegate’ не найдено на объекте типа ‘ UITableViewCell *’

1 ответ

  1. Обновите код, как показано ниже:

    CustomCell.ч

    #import <UIKit/UIKit.h>
    @interface TableViewCell : UITableViewCell
    @property (weak, nonatomic) IBOutlet UIButton *btnSegue; //Connet this button outlet to your cell in storyboard
    @end
    

    CustomCell.м

    #import "TableViewCell.h"
    
    @implementation TableViewCell
    - (void)awakeFromNib {
        [super awakeFromNib];
    
    }
    

    ViewController.м

    cellForRowAtIndexPath:

    -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    
       static NSString *MyIdentifier = @"CellIdentifier";
    
       TableViewCell *cell = (TableViewCell *) [tableView dequeueReusableCellWithIdentifier:MyIdentifier forIndexPath:indexPath];
        [cell.btnSegue addTarget:self action:@selector(yourSegue:) forControlEvents:UIControlEventTouchUpInside];
    
      //If you want some data to get fetch from cell so use this tag concept
         cell.btnSegue.tag = indexPath.row;
    
      }
      return cell;
    }
    -(void)yourSegue:(UIButton *)btn
    {
     //Write your segue code here
     int tag = btn.tag;
     //Use above tag to get data which is on your selected cell
    
    }