2013-10-10 63 views
-1

我有2個帶有xib文件的類(不是在storyboard中)。當我從一個類值傳遞給另一個總是Xcode的5之前的工作,但現在它不工作的Xcode 5.我從TimeZoneViewController傳遞價值SignUpViewController如下:從一個xib傳遞到另一個的值在Xcode 5中不起作用

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」中什麼也沒有顯示。哪裏有問題?提前致謝。

+0

嘗試切換第4行> 3以便[signUp.timeZoneLabel setText:cell.textLabel.text];然後[pushviewcontroller] – Yanchi

回答

1

在設置timeZoneLabel的值之前,您的代碼將導航到下一個屏幕。因此,您應該將第三行換成第四行,以便首先設置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創建屬性)在第一視圖控制器,設置親perty價值。

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)在SignUpViewController-viewDidLoad,設置timeZoneLabel文本:

self.timeZoneLabel.text = self.strTimeZoneLabel; 
+0

這也是。還是行不通。 – Leo

+0

@Leo:嘗試**更新**部分。 – Bhavin

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]; 
} 
1

更改您的代碼添加的NSString和更新這樣的:

OtherView.h

@property (nonatomic, strong) NSString *myText; 

OtherView.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]; 
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]; 

嘗試你這樣的問題會解決了

+0

與我的答案相同,但最好在viewWillAppear而不是viewDidLoad中刷新。 –

相關問題