0

我试图在一个视图中获取输入到 UITextFields 中的文本,并在按下按钮时将这些值传递给不同的视图控制器。在第一个视图控制器(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 中的标签保持为空。想法?

4

2 回答 2

2

看起来这是由于之前在这里讨论过的一个问题:当您实例化您ThePreviewViewController的 UIKit 实例时,还不能设置它们的属性。

解决方案是在您的(或更紧凑地使用 NSDictionary)上创建和设置NSString属性,然后在其事件处理程序中使用它来设置其 UIKit 元素的属性。ThePreviewViewControllerViewWillAppear

于 2013-01-30T18:39:35.817 回答
1

您应该设置一个 NSString 属性,而不是在ThePreview VC中设置 UITextField 文本。这是因为 UITextField 可能尚未加载,并且_thePreview.issue.text = issue.text将不起作用,因为_thePreview.issue仍未创建。因此,在您的ThePreview VC中创建一个属性(例如 NSString *issueString),然后在您的CreateViewController中将该属性设置为_thePreview.issueString = issue.text,最后在您的ThePreview VC中使用self在 vi ​​ewDidLoad方法中设置您的 textField 文本。 issue.text = self.issueString ;

希望这可以帮助。

于 2013-01-30T19:27:06.273 回答