1

我试图将一个字符串变量从 mainVC 类传递给 detailVC 类,但是当 viewDidLoad 启动时,myStringLabel 是空的,它应该包含“只是一个测试”。我不知道为什么。

主VC.m

#import "mainVC.h" 
@implementation mainVC 
@synthesize 

-(IBAction) openSecondController {
    //Ouverture de DetailVC
    detailVC *dVC = [[detailVC alloc] init];
    dVC.myStringLabel=@"Just a test";
    NSLog(@"dVC.myStringLabel before calling dVC :%@", dVC.myStringLabel);
    [self performSegueWithIdentifier:@"progDetailSegue" sender:nil];
    NSLog(@"dVC.myStringLabel after calling dVC :%@", dVC.myStringLabel) ;   
}    

细节VC.h

#import <UIKit/UIKit.h>
@interface detailVC : UIViewController {
 NSString *myStringLabel;
 IBOutlet UILabel *labelForString;
}
@property (nonatomic, strong) UILabel *labelForString;
@property (copy) NSString *myStringLabel;

详细VC.m

#import "detailVC.h"

@implementation detailVC
@synthesize myStringLabel, labelForString;

-(void) viewDidLoad {
NSLog(@"myStringLabel in viewDidLoad : %@", dVC.myStringLabel) ;
labelForString.text=myStringLabel;
}

-(IBAction) closeViewController {
//Fermeture com_mobilizProgramDetailViewController ouverte en Modal. 
[self dismissViewControllerAnimated:YES completion:nil];

}

NSLOG 输出:

2012-12-17 11:48:58.520 DataTransfert[5068:f803] dVC.myStringLabel before calling dVC : Just a test
2012-12-17 11:48:58.520 DataTransfert[5068:f803] myStringLabel in viewDidLoad : (null)
2012-12-17 11:48:58.520 DataTransfert[5068:f803] dVC.myStringLabel after calling dVC :Just a test
4

3 回答 3

0

问题解决了。

我使用了另一个解决方案:-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

在显示 viewController 之前调用,以在 veiwcontroller 之间传递数据。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
detailVC *dVC = [segue destinationViewController];
dVC.myStringLabel=@"Just a test";
}

然后它工作!在日志输出中,我得到了这个结果:

myStringLabel in viewDidLoad : Just a test

非常感谢@iVishal 试图帮助我。

祝大家新年快乐 !!

于 2012-12-25T23:45:49.693 回答
0

@iVishal:

我创建了一个这样的对象 ID:DKg-dG-bO1

对于viewController,这就是你在说什么?

于 2012-12-18T19:29:19.127 回答
0

在 viewDidLoad 中,将 dvc.mystringlbl 替换为 self.mystringlbl

于 2012-12-17T17:19:23.780 回答