Пользовательский делегат не работает (iPhone) - PullRequest
0 голосов
/ 18 апреля 2011

У меня есть пользовательский подкласс UITableViewCell, для которого я хочу создать делегата.Это .h подкласса UITableViewCell:

#import <UIKit/UIKit.h>

@class InfoTableViewCell;

@protocol InfoTableViewCellDelegate <NSObject>;

@optional
- (void)setTitle:(NSString *)title;

@end


@interface InfoTableViewCell : UITableViewCell <UITextFieldDelegate> {

    UITextField *textField;

    NSNumber *objectId;
    NSNumber *cellId;
    NSNumber *isName;

}

@property (nonatomic, retain) UITextField *textField;
@property (nonatomic, retain) NSNumber *objectId;
@property (nonatomic, retain) NSNumber *cellId;
@property (nonatomic, retain) NSNumber *isName;

@end

Однако приложение аварийно завершает работу и говорит, что нет метода setDelegate: когда я вызываю [cell setDelegate: self];в моем подклассе UIViewController, который инициализирует ячейку.Что я делаю не так?

Ответы [ 4 ]

1 голос
/ 18 апреля 2011

Вам необходимо создать свойство делегата, соответствующее протоколу, например, так:

#import <UIKit/UIKit.h>

@class InfoTableViewCell;
@protocol InfoTableViewCellDelegate <NSObject>;
@optional
- (void)setTitle:(NSString *)title;
@end

@interface InfoTableViewCell : UITableViewCell <UITextFieldDelegate> {
    id <InfoTableViewCellDelegate> delegate;
    UITextField *textField;
    NSNumber *objectId;
    NSNumber *cellId;
    NSNumber *isName;
}

@property (nonatomic, retain) UITextField *textField;
@property (nonatomic, retain) NSNumber *objectId;
@property (nonatomic, retain) NSNumber *cellId;
@property (nonatomic, retain) NSNumber *isName;
@property (nonatomic, assign) id <InfoTableViewCellDelegate> delegate;

@end

Не забудьте синтезировать.

1 голос
/ 18 апреля 2011

Ну, вам нужно создать атрибут delegate и установить свойство.

id <InfoTableViewCellDelegate> delegate;

//...

@property (nonatomic, assign) id <InfoTableViewCellDelegate> delegate;
0 голосов
/ 18 апреля 2011

Трудно сказать без контекста, но кажется, что вы хотите сделать это вместо этого:

textField.delegate = cell;
0 голосов
/ 18 апреля 2011

разве это не UITableView, у которого есть делегат, не UITableViewCell?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...