これについての簡単なコメントは次のとおりです。
-UIViewをサブクラス化し、すべてのUI要素をそのビューに、少なくともできる限り多く粉砕します。このサブクラス化されたビューのヘッダーをビュー コントローラーの実装ファイルにインポートします
-View Controller で、View Controller のビューを次のようにタイプキャストします。
-(HHYSignUpViewFirstPhase*)contentView
{
return (id)[self view];
}
-loadView メソッドを呼び出す
-(void)loadView
{
[self setView:[HHYSignUpViewFirstPhase new]];
}
-viewdidLoad では、次のように "[self contentView]" を呼び出して、サブクラス化された UIView からボタンなどにハンドラーを設定できるようになりました。
-(void)viewDidLoad
{
[super viewDidLoad];
[self setTitles:@"Sign Up"];
[[[self contentView] nameField] setDelegate:self];
[[[self contentView] emailField] setDelegate:self];
[[[self contentView] passwordField] setDelegate:self];
[[[self contentView] signupButton] addTarget:self action:@selector(signupPressed) forControlEvents:UIControlEventTouchUpInside];
}
これですべての設定が完了しました。あとは、ボタンからのイベントを処理するメソッドを追加するだけです。たとえば、サブクラス化したサブビューからビューが読み込まれます。
-(void)signupPressed
{
///do work
}
UIVIew サブクラス:
HHYSignUpViewFirstPhase.h
@interface HHYSignUpViewFirstPhase : UIView
@property (nonatomic) UIButton * signupButton;
@property (nonatomic) UITextField * emailField;
@property (nonatomic) UITextField * nameField;
@property (nonatomic) UITextField * passwordField;
@end
HHYSignUpViewFirstPhase.m
#import "HHYSignUpViewFirstPhase.h"
@implementation HHYSignUpViewFirstPhase
-(id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self == nil)
return nil;
//do work, set up buttons, constraints, etc, etc.
return self;
}
@end
基本的に、ここで私が言っているのは、サブクラス化された UIView では、UIView を初期化し、そのすべての制約とすべてを設定し、フレームを含めてから、UIViewController のビューの読み込みメソッドで、このビューを呼び出して typcast を実行できるということです。 UIViewController のビュー。そのため、init でセットアップを行う場合もあれば、load ビューでセットアップを行う場合もあります。何をしようとしているのかによって異なりますが、これは、職務の分離、カプセル化を使用して、純粋にプログラム的な方法でこれをセットアップする方法です。 、およびすべてが MVC フレームワークに結び付けられています。すべての作業はクラスに分割され、すべてのコントローラーが 1 つのクラスを制御します。
http://matthewmorey.com/creating-uiviews-programmatically-with-auto-layout/
この
https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/ViewLoadingandUnloading/ViewLoadingandUnloading.html#//apple_ref/doc/uid/TP40007457-CH10-SW36