我正在尝试将一个字符串变量从mainVC类传递给detailVC类,但是当启动viewDidLoad时,myStringLabel为空,它应该包含“Just a test”。 我不知道为什么。
mainVC.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) ;
}
detailVC.h
#import <UIKit/UIKit.h>
@interface detailVC : UIViewController {
NSString *myStringLabel;
IBOutlet UILabel *labelForString;
}
@property (nonatomic, strong) UILabel *labelForString;
@property (copy) NSString *myStringLabel;
detailVC.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
答案 0 :(得分:0)
在viewDidLoad中,用self.mystringlbl替换dvc.mystringlbl
答案 1 :(得分:0)
@iVishal:
我创建了一个像这样的对象ID:DKg-dG-bO1
对于viewController,你在说什么?
答案 2 :(得分:0)
问题解决了。
我使用了另一个解决方案: - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
在显示viewController以在veiwcontrollers之间传递数据之前调用。
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
detailVC *dVC = [segue destinationViewController];
dVC.myStringLabel=@"Just a test";
}
然后它的作品! 在日志输出中,我得到了这个结果:
myStringLabel in viewDidLoad : Just a test
@ iVishal试图帮助我很多。
祝新年快乐!