Как я могу избавиться от этого предупреждения?

#iphone #objective-c

#iPhone #objective-c

Вопрос:

Я получаю предупреждение в строке (текстовое поле.делегировать = self;), в котором говорится «Присвоение идентификатору ‘из запроса предупреждения несовместимого типа»

 - (id)initWithTitle:(NSString *)title message:(NSString *)message delegate:(id)delegate cancelButtonTitle:(NSString *)cancelButtonTitle okButtonTitle:(NSString *)okayButtonTitle
{

    if (self == [super initWithTitle:title message:message delegate:delegate cancelButtonTitle:cancelButtonTitle otherButtonTitles:okayButtonTitle, nil])
    {
        UITextField *theTextField = [[UITextField alloc] initWithFrame:CGRectMake(12.0, 45.0, 260.0, 25.0)]; 
        [theTextField setBackgroundColor:[UIColor whiteColor]]; 
        [self addSubview:theTextField];
        self.textField = theTextField;
        [theTextField release];
        CGAffineTransform translate = CGAffineTransformMakeTranslation(0.0, -25.0); 
        [self setTransform:translate];

        theTextField.backgroundColor = [UIColor clearColor];
        theTextField.borderStyle = UITextBorderStyleRoundedRect;
        theTextField.delegate = self;
    }
    return self;
}
  

Ответ №1:

Об этом свойстве в документах

 @property(nonatomic, assign) id<UITextFieldDelegate> delegate
  

Это означает, что ваш класс должен соответствовать UITextFieldDelegate протоколу.
Объявление может выглядеть следующим образом

 @interface MyController : NSObject <UITextFieldDelegate> {
  

Ответ №2:

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

 - (id)initWithTitle:(NSString *)title message:(NSString *)message delegate:(id)delegate cancelButtonTitle:(NSString *)cancelButtonTitle okButtonTitle:(NSString *)okayButtonTitle
{

    if (self == [super initWithTitle:title message:message delegate:delegate cancelButtonTitle:cancelButtonTitle otherButtonTitles:okayButtonTitle, nil])
    {
        UITextField *theTextField = [[UITextField alloc] initWithFrame:CGRectMake(12.0, 45.0, 260.0, 25.0)]; 
        [theTextField setBackgroundColor:[UIColor whiteColor]]; 

        theTextField.backgroundColor = [UIColor clearColor];
        theTextField.borderStyle = UITextBorderStyleRoundedRect;
        theTextField.delegate = self;

        self.textField = theTextField;
        [theTextField release];
        [self addSubview:textField ];
        CGAffineTransform translate = CGAffineTransformMakeTranslation(0.0, -25.0); 
        [self setTransform:translate];
    }
    return self;
}
  

Также проверьте, подтверждается ли ваш класс UITextFieldDelegate протоколом.