嘿所有, 这是一个有趣的。我有两个ViewControllers: 第一个(触发应用程序加载) - >显示textField和按钮。 按下按钮时,textField中的文本将通过按钮的操作方法传递给第二个ViewController。第二个ViewController是在Label中显示文本。 该字符串保持为null :-( 标签不会改变: - (
我做的其他事情 - 在第一个ViewController的动作方法内 - 我创建了一个新的UILabel(你在这里看不到它......),将其文本字段设置为我从用户收到的输入,然后我将第二个ViewController的Label设置为该标签。标签仍然没有改变,但至少新标签的文本字段确实发生了变化。如果有人能够向我解释这一点,那么我将很乐意学习另一件新事物......
第一个控制器代码:
#import "FlipsideViewController.h"
@interface MainViewController : UIViewController <FlipsideViewControllerDelegate> {
UITextField *theTextInput;
}
@property (nonatomic, retain) IBOutlet UITextField *theTextInput;
- (IBAction)textFieldDoneEditing:(id)sender;
- (IBAction)showInfo:(id)sender;
@end
.m相关部分(“FlipsideViewController”是我提到的第二个ViewController):
- (IBAction)showInfo:(id)sender {
FlipsideViewController *controller = [[FlipsideViewController alloc] initWithNibName:@"FlipsideView" bundle:nil];
controller.delegate = self;
controller.textToTransmit.text = self.theTextInput.text;
controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:controller animated:YES];
[controller release];
}
这是第二个ViewController:
#import <UIKit/UIKit.h>
@protocol FlipsideViewControllerDelegate;
@interface FlipsideViewController : UIViewController {
UILabel *textToTransmit;
id <FlipsideViewControllerDelegate> delegate;
}
@property (nonatomic, assign) id <FlipsideViewControllerDelegate> delegate;
@property (nonatomic, retain) IBOutlet UILabel *textToTransmit;
- (IBAction)done:(id)sender;
-(void)updateLabel:(NSString *)str;
@end
@protocol FlipsideViewControllerDelegate
- (void)flipsideViewControllerDidFinish:(FlipsideViewController *)controller;
@end
并且它是.m文件:
#import "FlipsideViewController.h"
@implementation FlipsideViewController
@synthesize textToTransmit;
@synthesize delegate;
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor viewFlipsideBackgroundColor];
}
- (IBAction)done:(id)sender {
[self.delegate flipsideViewControllerDidFinish:self];
}
....
任何有耐心阅读我的Q的人 - 我会感激你的答案,这将有助于我前进。
的问候, 乔
答案 0 :(得分:1)
使用调试器并在
行设置断点controller.textToTransmit.text = self.theTextInput.text;
检查UILabel是否存在(非空),否则可能忘记在Interface Builder中将其链接起来。
您还可以使用NSString属性(而不是UILabel)将数据传递给控制器并覆盖setter方法以设置标签的文本。
答案 1 :(得分:0)
重新定位设置文字的行,以便在presentModalViewController
:
FlipsideViewController *controller = [[FlipsideViewController alloc] initWithNibName:@"FlipsideView" bundle:nil];
controller.delegate = self;
controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:controller animated:YES];
controller.textToTransmit.text = self.theTextInput.text;
[controller release];