2016-12-26 173 views
0

我在学, 真的需要帮助!如何使用委托从TableViewCell.xib向ViewControllerB创建segue Objective c?

我有2个ViewControllers:ViewControllerAUITableView(与TableViewCell .h .m .xib文件)和ViewControllerB

我在CustomCell中有“连接按钮”- (IBAction)goButton:(id)sender;

如何使用委托从TableViewCell转到ViewControllerB

TableViewCell.h

#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.m

#import "TableViewCell.h" 

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

} 

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

ViewControllerA.h

#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 

ViewControllerA.m

#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;属性 '代理' 的类型 '的UITableViewCell *'

回答

0

更新的对象没有找到像下面的代码:

CustomCell.h

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

CustomCell。 m

#import "TableViewCell.h" 

@implementation TableViewCell 
- (void)awakeFromNib { 
    [super awakeFromNib]; 

} 

ViewControllerA.m

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 

}