0

firstViewControllerでカスタマイズしたUITextFieldがあります。これで、他の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..
}

次に、このクラスのUITextFieldから派生するUICustomTextFieldという新しいクラスを作成し、メソッドを作成します。

//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 に答える