0

我是 iphone 开发的新手。现在,我在项目中面临一个警告。而在 ios 6 中设置 UITextfield 的代表时,我收到了以下警告

 "**incompatible pointer types sending 'class' to parameter of type '<uitextfielddelegate>'**"


+(UITextField*)tableLabelForText:(NSString *)txt frame:(CGRect)frm isEditable:(BOOL)isEditable 

{

    UITextField *txtField = [[UITextField alloc] initWithFrame:frm];
    [txtField setEnabled:isEditable];

    [txtField setText:txt];

    [txtField setTextColor:[UIColor blackColor]];
    [txtField setDelegate:self];

    return txtField;
}
4

3 回答 3

0

您正在使用类级别方法“ + ”返回一个文本字段实例,将其更改为实例级别方法“ - ”。IE:

-(UITextField*)tableLabelForText:(NSString *)txt frame:(CGRect)frm isEditable:(BOOL)isEditable 
于 2013-06-05T06:24:43.747 回答
0

如果我没记错,您正在为 NSObject 类设置 Delegate ,因为 NSObject 类没有任何视图,因此 UITextFieldDelegate 不会向该类确认。而是使用 UIView

@interface ClassName : UIView  <UITextFieldDelegate>
于 2013-06-05T07:09:57.657 回答
0

您正在尝试在不知道初始化对象的类方法中分配委托。因此发出警告。您需要做的是将 setDelegate 设置为已初始化的对象。

[txtField setDelegate:<MyObject>]; 

或者您可以作为答案之一将类方法更改为实例方法。

-(UITextField*)tableLabelForText:(NSString *)txt frame:(CGRect)frm isEditable:(BOOL)isEditable 
于 2013-06-05T06:19:56.677 回答