2016-05-22 10 views
-1

データを1つのView Controllerから別のView Controllerに渡す方法を知っています。これでView ControllerからNSObjectクラスにテキストフィールド値を渡す方法と、私はこれをする手助けをしてください誰もこれのための例を与えることができますView ControllerからNSObjectクラスへのデータの受け渡し

+0

(私はあなたが 'NSObject'サブクラスを意味すると思います)クラスの外観はどのようなもので、クラスのオブジェクトはコントローラにどのように関係していますか? –

+0

@Phillip MillsそれはNSObjectサブクラスです。View Controllerには、テキストフィールドがあり、それをnsobjectに渡してから、そこに何らかのプロセスを実行したいのですが、 – user6183984

+1

私はあなたを混乱させています。サブクラスの.hファイルに 'NSString'プロパティを作成し、ビューコントローラからプロパティを設定します。コントローラは明らかにオブジェクトへの参照を必要としますが、それを行う方法は私の質問に答えることによって決まります: "*コントローラに関連するクラスのオブジェクトはどうですか?" –

答えて

0

私はあなたのビューコントローラで使用するためのモデルオブジェクトにデータを格納する方法を聞いていると思います。これがあなたの意味でないなら、私を許してください。

モデルオブジェクトはNSObjectから継承する必要があります。必要に応じて、別のモデルオブジェクトを拡張してプロパティ値を追加することもできます。モデルオブジェクトは、ビューオブジェクトをデータから分離するのに最適な方法です。

お客様のフィールドにCustomerViewControllerがあるとします。顧客フィールドにデータを入力し、そのデータに対して何らかの処理を実行する必要があります。モデルオブジェクトは、データとビジネスルールに関連する処理ロジックからビューを分離できるようにすることで、これらの関係をサポートします。

以下の関係を参考にして、効果的なビューコントローラを構築して、データとビューを分離する必要があります。

のCustomModelインタフェース

@interface CustomerModel : NSObject 

@property (strong, nonatomic) NSString *firstName, *lastName; 
@property (strong, nonatomic) NSString *phoneNumber; 

- (BOOL) isValidPhoneNumber:(NSString *)phoneNumber; 

@end 

CustomerModel実装

#import "CustomerModel.h" 

@implementation CustomerModel 

- (BOOL) isValidPhoneNumber:(NSString *)phoneNumber 
{ 
    //Check that phone number can be parsed and is valid 
} 

@end 

CustomerViewController実装

#import "CustomerViewController.h" 
#import "CustomerModel.h" 

@interface CustomerViewController() <UITextFieldDelegate> 

@property (strong, nonatomic) CustomerModel *customerModel; 
... 
@property (weak, nonatomic) IBOutlet UITextField *firstNameField 
... 

@end 


@implementation CustomerViewController 

- (void) viewDidLoad { 
    //Optionally instantiate the customer model with stored data, 
    // to pre-populate the view controller. 

    self.customerModel = [CustomerModel new]; 

    self.firstNameField.delegate = self; 
} 

- (void) textFieldDidEndEditing:(UITextField *)textField { 
    //Validate the phone number 
    NSString *phoneNumber = textField.text; 
    if ([self.customerModel isValidPhoneNumber:phoneNumber]) { 
     self.customerModel.phoneNumber = phoneNumber; 
    } else { 
     //Alert the user that the data is invalid 
    } 

} 

- (BOOL) textFieldShouldReturn:(UITextField *)textField { 
    [textField resignFirstResponder]; 
    return YES; 
} 

@end 

考えられる改善

  • それは情報を記入しながら、アラートを表示し、ユーザーに少しうるさいかもしれません。したがって、保存ボタンが押されたときに検証を延期する方が良いかもしれません。
  • モデルオブジェクトは、フォームを事前入力するために使用するデータストアから移入できます。
関連する問題