1

文字列変数を 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) ;   
}    

詳細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

@iVishal:

私はこのようなオブジェクトIDを設立しました:DKg-dG-bO1

viewControllerの場合、それはあなたが話していることですか?

于 2012-12-18T19:29:19.127 に答える
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にたくさん感謝します。

みなさん、明けましておめでとうございます!

于 2012-12-25T23:45:49.693 に答える
0

viewDidLoad で、dvc.mystringlbl を self.mystringlbl に置き換えます

于 2012-12-17T17:19:23.780 に答える