1

firstviewcontroller クラスから secondviewcontroller クラスに 1 つの文字列変数を渡すにはどうすればよいですか? ここで、secondviewcontroller クラスには「.m」ファイルと「.h」ファイルしかありません。現在、secondviewcontroller「.h」ファイルにあります

@property(nonatomic,retain) NSString *value2;

secondviewcontroller.m私が使用しているファイルで

NSString *str=value2;
NSLog(@"%@",str);

// it prints a null 

私のfirstviewcontroller.mファイルで次のように割り当てています

secondviewcontroller *second=[[secondviewcontroller alloc]init];
second.value2=value1;

value1 は firstviewcontroller で文字列として宣言されています..1つの解決策を教えてください

4

5 に答える 5

4

value1 のように割り当ててみてください。

firstviewcontroller.m

NSString *value1 = [[NSString alloc] initWithString:@"my value1"];

そして割り当てますvc.value2 = value1;

于 2013-03-16T09:51:56.517 に答える
1

一般的にロジックは:

注:value1value2 の両方のデータ型は同じである必要があります。

最初にsecondVC.hファイルに入れる

NSString *value2;

@propertyそのと@synthesize適切に与える。

あなたの中で firstVC.m

NSString *value1 = @"this is string"; // in your case check it is, proper or not (i mean  nil/not nill)??

およびのオブジェクトの作成時secondVC

secondVC *vc = [[secondVC alloc] init];
vc.value2 = value1;
[self presentModalViewController:vc animated:YES];

secondVC.mファイルに書き込む

NSLog(@"%@",value2); 

コンソールに入れてチェックアウトします。

于 2013-03-16T09:35:10.983 に答える
0

あなたの財産を合成し、それを自分で使用しました。value2。

これで問題が解決することを願っています。

ではごきげんよう !!!

于 2013-03-16T09:34:45.580 に答える
0

ここに表示される最も可能性の高い理由は、2 番目のビュー コントローラーの .m ファイルでプロパティを合成していないことです。プロパティを合成しない限り、開始されず、nil になります。コード全体を投稿してください。

プロパティの変数を宣言し、値を変数に割り当てるようにプロパティを合成する必要があります。

そうでない場合はお知らせください。

于 2013-03-16T09:27:35.913 に答える
0

これは私の最初のView Controllerで、xibファイルがあります

.h

#import "SecondViewController.h"
@interface ViewController : UIViewController

@property(strong, nonatomic) SecondViewController * svc;

@end

2番目はxibなしです。

.h

#import <UIKit/UIKit.h>
@class ViewController;

    @interface SecondViewController : UIViewController

    @property (strong, nonatomic) ViewController * vc;

    @property (strong, nonatomic) NSMutableString * passValue;


    @end

実装中

最初の.mはviewDidLoadです

- (void)viewDidLoad
{
     NSLog(@"viewDidLoad");

    [super viewDidLoad];

    svc=[[SecondViewController alloc] init];

    svc.vc=self;

    NSString * str= svc.passValue;

    NSLog(@"%@",str);

    svc.passValue =[@"StringFromFirstView" mutableCopy];

    [svc viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.
}

そして秒で.m

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        passValue = @"mySValue";
        // Custom initialization
    }
    return self;
}


- (void)viewDidLoad
{

    [super viewDidLoad];

    NSLog(@"passValue %@",passValue);

    // Do any additional setup after loading the view.
}

そして、コードを実行すると

    2013-03-16 13:11:40.178 ali[787:c07] viewDidLoad
2013-03-16 13:11:40.179 ali[787:c07] mySValue
2013-03-16 13:11:40.180 ali[787:c07] passValue StringFromFirstView
于 2013-03-16T10:54:59.227 に答える