0

1つのビューでUITextFieldsに入力されたテキストを取得し、ボタンが押されたときにそれらの値を別のViewControllerに渡そうとしています。最初のビューコントローラ(CreateViewController)には、次のものがあります。

#import <UIKit/UIKit.h>
#import <MessageUI/MFMailComposeViewController.h>
@class ThePreviewViewController;
@interface CreateViewController : UIViewController <UIAlertViewDelegate, MFMailComposeViewControllerDelegate> {
    UIDatePicker *datePicker;
    UIDatePicker *datePicker2;
    ThePreviewViewController *_thePreview;
}
@property (nonatomic, retain) IBOutlet UITextField *toName;
@property (nonatomic, retain) IBOutlet UITextField *fromName;
@property (nonatomic, retain) IBOutlet UITextField *issue;
@property (nonatomic, retain) ThePreviewViewController *thePreview;
@property (nonatomic, retain) IBOutlet UITextField *expire;
@property (nonatomic, retain) IBOutlet UITextField *loveMessage;
@property (nonatomic, retain) IBOutlet UITextField *gift;
-(IBAction)build;
@end

実装ファイルは次のとおりです。

#import "ThePreviewViewController.h"
@implementation CreateViewController
@synthesize toName, fromName, gift, loveMessage, issue, expire, datePicker, datePicker2;
@synthesize thePreview = _thePreview;

-(IBAction)preview {
    if (_thePreview == nil) {
        self.thePreview = [[ThePreviewViewController alloc] initWithNibName:@"ThePreviewViewController" bundle:[NSBundle mainBundle]] ;
    }
    _thePreview.issue.text = issue.text;
    _thePreview.gift.text = gift.text;
    _thePreview.expire.text = expire.text;
    [self.navigationController pushViewController:_thePreview animated:YES];



}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

ただし、すべてのアウトレットを接続した後、ThePreviewViewControllerのラベルはnullのままになります。考え?

4

2 に答える 2

2

これは、以前ここで説明した問題が原因のようです: ThePreviewViewControllerUIKit インスタンスをインスタンス化するときに、プロパティを設定するためにまだ利用できません。

解決策は、 (またはよりコンパクトには NSDictionary を使用して)NSStringプロパティを作成および設定し、イベント ハンドラーで UIKit 要素のプロパティを設定することです。ThePreviewViewControllerViewWillAppear

于 2013-01-30T18:39:35.817 に答える
1

ThePreview VCでUITextFieldテキストを設定する代わりに、NSStringプロパティを設定する必要があります。これは、UITextFieldがまだロードされていない可能性があり、 _thePreview.issueがまだ作成されていないため、 _thePreview.issue.text=issue.textは効果がないためです。したがって、 ThePreview VCでプロパティ(NSString * issueStringなど)を作成し、そのプロパティをCreateViewControllerで_thePreview.issueString = issue.textとして設定し、最後にThePreviewVCでselfを使用してviewDidLoadメソッドでtextFieldテキストを設定します。 issue.text = self.issueString ;

お役に立てれば。

于 2013-01-30T19:27:06.273 に答える