-1

我有 2 个带有 xib 文件的类(不在情节提要中)。当我将一个值从一个类传递到另一个类时,它总是在 Xcode 5 之前工作。但现在它不适用于 Xcode 5。我将值从 TimeZoneViewController 传递给 SignUpViewController,如下所示:

NSLog(@"value: %@",cell.textLabel.text); 
SignUpViewController *signUp = [[SignUpViewController alloc]initWithNibName:@"SignUpViewController" bundle:nil];
[signUp.timeZoneLabel setText:cell.textLabel.text];
[self.navigationController pushViewController:signUp animated:YES];   

日志显示该值,但在 SignUpViewController 出现后,它在“timeZoneLabel”中没有显示任何内容。问题出在哪里?提前致谢。

4

4 回答 4

1

在设置 的值之前,您的代码会将您导航到下一个屏幕timeZoneLabel。因此,您应该将第 3 行与第 4 行交换以设置timeZoneLabel第一行的文本,然后导航到SignUpViewController.

使用此代码:

NSLog(@"value: %@",cell.textLabel.text); 
SignUpViewController *signUp = [[SignUpViewController alloc]initWithNibName:@"SignUpViewController" bundle:nil];
[signUp.timeZoneLabel setText:cell.textLabel.text];
[self.navigationController pushViewController:signUp animated:YES];  

更新 :

1)在SignUpViewController

@property (strong, nonatomic) NSString * strTimeZoneLabel;

2)在第一个视图控制器中,设置该属性值。

NSLog(@"value: %@",cell.textLabel.text); 
SignUpViewController *signUp = [[SignUpViewController alloc]initWithNibName:@"SignUpViewController" bundle:nil];
signUp.strTimeZoneLabel = cell.textLabel.text;
[self.navigationController pushViewController:signUp animated:YES];

3) 在-viewDidLoadof 中SignUpViewController,设置 的文本timeZoneLabel

self.timeZoneLabel.text = self.strTimeZoneLabel;
于 2013-10-10T08:13:21.753 回答
1

SignUpViewController的视图没有从 xib 加载到内存中,所以signUp.timeZoneLabel == nil. 使用控制器属性发送值:

signUp.timeZoneLabelText = cell.textLabel.text;

这是您的财产:

@property (strong, nonatomic) NSString * timeZoneLabelText;

这是实现方法:

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self.timeZoneLabel setText:self.timeZoneLabelText];
}
于 2013-10-10T08:17:03.517 回答
1

更改您的代码添加一个 NSString 并像这样更新:

其他视图.h

@property (nonatomic, strong) NSString *myText;

其他视图.m

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    [self.timeZoneLabel setText:self.myText];
}

传递数据:

NSLog(@"value: %@",cell.textLabel.text); 
SignUpViewController *signUp = [[SignUpViewController alloc]initWithNibName:@"SignUpViewController" bundle:nil];
[signUp.myText setText:cell.textLabel.text];
[self.navigationController pushViewController:signUp animated:YES];  
于 2013-10-10T08:25:01.907 回答
1

您不能设置另一个视图控制器的标签文本,因此您必须将字符串值从一个类传递给另一个类,并将此字符串值分配给 signupviewcontroller 的 viewDidLoad 方法中的标签。

像下面的代码

在 SignUpViewController.h 文件中

@property (nonautomic, retain) NSString *strTimeZone;
@property (nonautomic, retain) UILabel *lblTimeZone;

在 SignUpViewController.m 文件中

- (void)viewDidLoad
{
     [super viewDidLoad];
     self.lblTimeZone.text = strTimeZone;
}

在 firstviewcontroller 文件中,您要从中推送另一个类

NSLog(@"value: %@",cell.textLabel.text); 
SignUpViewController *signUp = [[SignUpViewController alloc]initWithNibName:@"SignUpViewController" bundle:nil];
signUp.strTimeZone = cell.textLabel.text;
[self.navigationController pushViewController:signUp animated:YES];  

像这样尝试你的问题会解决

于 2013-10-10T08:25:12.990 回答