1

如何将一个字符串变量从我的 firstviewcontroller 类传递给 secondviewcontroller 类?这里 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 中声明为字符串..请告诉我一个解决方案

4

5 回答 5

4

尝试分配您的 value1 之类的。

第一视图控制器.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

这里出现的最可能的原因是您没有在第二个视图控制器的 .m 文件中合成该属性。除非您合成该属性,否则它不会启动并且为零。请发布整个代码。

您需要为该属性声明一个变量并合成该属性,以便将值分配给该变量。

如果不是这样,请告诉我。

于 2013-03-16T09:27:35.913 回答
0

合成你的财产并将其与自我一起使用。价值2。

希望这能解决您的问题。

祝一切顺利 !!!

于 2013-03-16T09:34:45.580 回答
0

好的,这是我的第一个视图控制器,它有 xib 文件

。H

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

@property(strong, nonatomic) SecondViewController * svc;

@end

第二个没有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 回答