0

我有一个 UITextField,我在我的 firstViewController 中自定义了它。现在我不希望它在其他 ViewController 上具有相同的行为。无论如何要导入 IBOutlet 上的所有属性吗?

4

3 回答 3

1

为什么不定义一个基本视图控制器,然后从中派生所有视图控制器?

@interface MyBaseCustomViewController : UIViewController
 ...
@property(...) UITextField* ...
 ...
@end

@interface MyOtherCustomViewController : MyBaseCustomViewController
 ...
于 2012-06-04T15:13:25.253 回答
1

是的,您可以创建 UITextField 的子类,该子类将包含您在视图控制器中执行的所有自定义代码作为子类中的函数。

例如

- (void) viewDidLoad
{
    //UITextField *textField;
    //change color, background, size etc..
}

现在创建一个名为 UICustomTextField 的新类,它派生自此类中的 UITextField 创建一个方法:

//in UICustomTextField.m
- (void) doCustomModifications
{
    self.stuff = custom stuff;
    other custom stuff
    etc...
}

在您的代码中调用 doCustomModifications

- (void)viewDidLoad
{
    [customTextField doCustomModifications];
}
于 2012-06-04T15:15:38.357 回答
1

简单地创建您自己的 Customclass 并在构造函数中设置属性。

@interface CustomTextField : UITextField

@end


@implementation CustomTextField

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
      //Customize here
      self.autocapitalizationType = UITextAutocorrectionTypeDefault;
      self.text = @"Blub";
      ....
    }
    return self;
}
@end

如果您创建一个新的文本字段,请使用您的自定义类创建对象:

CustomTextField *field = [[CustomTextField alloc] initWithFrame: ...];
于 2012-06-04T15:20:25.780 回答