0

ビューの属性 (uibutton、uilabel、uitextfield、初期化変数など) の割り当て/初期化、設定に最適なオプションはどこでしょうか。

これは、厳密にプログラムでアプリを開発することに関するものです。これらのビューがクラスの -init メソッドで割り当て/初期化されている場合もありますが、-loadview メソッドで他のビューが設定されている場合もあります。

誰かがこれについて明確にすることができますか? そして、どちらの方法でもそれを行うのに最適な時期の抽象的な例がいくつかあります。

ありがとう

4

2 に答える 2

-1

これについての簡単なコメントは次のとおりです。

-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

于 2015-08-17T23:16:32.403 に答える