我试图在一个 View 中获取输入到 UITextFields 中的文本,并在按下按钮时将这些值传递到不同的 View Controller 中。在第一个 View Controller (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
但是,在我连接所有 socket 后,ThePreviewViewController 中的标签保持为空。想法?
最佳答案
看起来这是由于之前在这里讨论过的一个问题:当您实例化您的 ThePreviewViewController
时,其 UIKit 实例尚不可用于设置其属性。
解决方案是在 ThePreviewViewController
上创建并设置 NSString
属性(或更紧凑地使用 NSDictionary),然后在其 ViewWillAppear
用于设置其 UIKit 元素属性的事件处理程序。
关于ios - 从一个 View Controller 向另一个 View Controller 发出传递值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14610886/