TableViewRowProtocolДелегат не получает набор из класса
#import <Foundation/Foundation.h>
@protocol TableViewRowProtocol <NSObject>
-(void) addRow;
@end
создал делегат в классе HeaderCell и вызвать метод протокола из того же
HeaderCell.h
#import <UIKit/UIKit.h>
#import "TableViewRowProtocol.h"
@interface HeaderCell : UITableViewCell<UITextFieldDelegate>
@property (strong, nonatomic) IBOutlet UILabel* header;
@property (nonatomic,assign) id<TableViewRowProtocol> rowdelegate;
-(IBAction)add:(id)sender;
@end
HeaderCell.m
#import "HeaderCell.h"
#import "MembershipsView.h"
@implementation HeaderCell
@synthesize header,rowdelegate;
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
}
return self;
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
-(IBAction)add:(id)sender
{
[rowdelegate addRow];
}
@end
Затем я создал объект класса HeaderCell
в классе MembershipsView
и установить rowdelegate
как само собой, так как метод addrow
в протоколе реализован в том же классе
MembershipsView .h
#import <UIKit/UIKit.h>
#import "DoctorService.h"
#import "DEcell.h"
#import "HeaderCell.h"
@interface MembershipsView : UIView <UITableViewDataSource,UITableViewDataSource,UITextFieldDelegate,UIAlertViewDelegate,TableViewRowProtocol>
{
NSMutableArray* memberships;
}
@property (nonatomic, assign) int edit;
@property (nonatomic, strong) IBOutlet UITableView* membershipsTable;
@property(nonatomic,strong) NSString* DoctorMembershipsDTO;
@property (nonatomic,strong) HeaderCell* ObjHeaderCell;
@property(nonatomic, assign) int selectedDoctorId;
-(void)whenViewLoaded;
@end
MembershipsView.m
#import "MembershipsView.h"
@implementation MembershipsView
@synthesize selectedDoctorId,DoctorMembershipsDTO,edit,ObjHeaderCell;
- (id)initWithFrame:(CGRect)frame
{
self = [[[NSBundle mainBundle] loadNibNamed:@"MembershipsView" owner:self options:Nil] lastObject];
if (self) {
// Initialization code
}
return self;
}
-(void)whenViewLoaded
{
DoctorMembershipsDTO=[[NSString alloc]init];
memberships=[[DoctorService sharedInstance] getMembershipsByDoctorId:selectedDoctorId];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return memberships.count+1;
}
-(void)addRow
{
UIAlertView* addMembership = [[UIAlertView alloc]initWithTitle:@"Add Membership"` `message:@" " delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Add", nil];
addMembership.alertViewStyle = UIAlertViewStylePlainTextInput;
[addMembership textFieldAtIndex:0].delegate = self;
[addMembership show];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if(edit == 1)
{
if (0 == indexPath.row)
{
static NSString *cellId = @"HeaderCell";
ObjHeaderCell = (HeaderCell *)[tableView dequeueReusableCellWithIdentifier:cellId];
ObjHeaderCell.rowdelegate=self;
if (ObjHeaderCell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"HeaderCell" owner:self options:nil];
`ObjHeaderCell = [nib objectAtIndex:0];
}
ObjHeaderCell.header.text = @"Memberships";
return ObjHeaderCell;
}
static NSString *cellId = @"Cell";
DEcell *cell = (DEcell *)[tableView dequeueReusableCellWithIdentifier:cellId];
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"DEcell" owner:self options:nil];
`cell = [nib objectAtIndex:0];
}
DoctorMembershipsDTO = [memberships objectAtIndex:indexPath.row-1];
cell.labelText.text = DoctorMembershipsDTO;
return cell;
}
else
{
static NSString* CellId= @"cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellId];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellId] ;
}
DoctorMembershipsDTO = [memberships objectAtIndex:indexPath.row];
cell.textLabel.text = DoctorMembershipsDTO;
return cell;
}
}
@end
Но когда я создал объект MembershipsView
в HeaderCell
класса, множества rowdelegate = объект MembershipsView. Затем метод набирается Пожалуйста, помогите, заблаговременно
Ваш вопрос непонятен. Что вы хотите, где ваш метод делегата TableViewRowProtocol? Если вы назначаете делегат TableViewRowProtocol классу Membership, вам необходимо определить этот метод делегата в самом членстве. Возможно, вы делаете это наоборот. –
Я определил rowdelegate в классе «HeaderCell», потому что я хочу, чтобы метод «addrow» вызывался при нажатии кнопки («добавить») на пользовательскую ячейку. Но мне нужна реализация метода в классе «MembershipsView». Пожалуйста, проверьте приведенный выше код. –