1

メインのView ControllerにはUITextFieldがあり、テキスト入力を宿題モデル(クラス)のNSStringに保存しようとしています。

宿題.h

#import <Foundation/Foundation.h>

@interface Homework : NSObject

@property (nonatomic, strong) NSString *className;
@property (nonatomic, strong) NSString *assignmentTitle;


@end

宿題.m

#import "Homework.h"

@implementation Homework

@synthesize className = _className;
@synthesize assignmentTitle = _assignmentTitle;

@end

私のassignmentViewControllerでは、宿題タイプのオブジェクトを作成し、保存ボタンが押されたときにUITextFieldに入力されたものと等しくなるように設定しようとしています。

割り当てビュー コントローラー

#import <UIKit/UIKit.h>
#import "Homework.h"

@interface Assignment : UIViewController {


}

@property(nonatomic) IBOutlet UITextField *ClassNameField;
@property(nonatomic) IBOutlet UILabel *ClassNameLabel;
@property (weak, nonatomic) IBOutlet UIButton *SaveButton;

@property (nonatomic, strong) Homework *homeworkAssignment;


- (IBAction)Save:(UIButton *)sender;

@end

AssignmentViewController.m

- (IBAction)Save:(UIButton *)sender {

self.homeworkAssignment.className = self.ClassNameField.text;
NSLog(@"SaveButtonPressed %@", self.homeworkAssignment.className);

}

NSLog は、className が (null) であることを出力します。誰かが私が間違っていることを理解するのを手伝ってくれますか? これは私の初めての iOS アプリです (Hello World 以外では)。

編集:これはARCを使用しています

編集:
self.homeworkAssignment.className = self.ClassNameField.text;を変更してみました。to self.homeworkAssignment.className = @"TEST"; ログにはまだ (Null) が表示されます。

4

2 に答える 2

0

正直なところ、最初のステップは常に難しいですが、正しい方法で学ぶ必要があります。

まず、次のように合成します。

@synthesize labelAssignmentTitle,labelClassName;

また

@synthesize labelAssignmentTitle;
@synthesize labelClassName;

次のことを行う必要はありません。

@synthesize className = _className;
@synthesize assignmentTitle = _assignmentTitle;

最初から正しい方法で初期化すれば、後でもっと簡単に初期化できます。

HomeWork.h

@interface HomeWork : NSObject
@property (nonatomic, strong) NSString *className;
@property (nonatomic, strong) NSString *assignmentTitle;

-(id)initWithClassName:(NSString *)newClassName andAssignmentTitle:(NSString*)newAssigmentTitle;

HomeWork.m

@implementation HomeWork
@synthesize assignmentTitle,className;

-(id)initWithClassName:(NSString *)newClassName andAssignmentTitle:(NSString*)newAssigmentTitle {
    self = [super init];
    if(self){
        assignmentTitle = newAssigmentTitle;
        className = newClass;

    }
    return self;
}
@end

ViewController.m

- (IBAction)saveIt:(id)sender {
    HomeWork *newHomeWork = [[HomeWork alloc]initWithClassName:[labelClassName text]andAssignmentTitle:[labelAssignmentTitle text]];
}

このため、2 つの UITextFields で指定されたパラメーターを使用して newHomeWork オブジェクトを直接作成します。

ログメッセージに出力して、何が起こるか見てみましょう ;)

于 2013-09-29T00:58:50.767 に答える