如何在xcode中没有xib的情况下将字符串值从一个viewcontroller传递到另一个viewcontroller?

时间:2013-03-16 09:24:35

标签: ios objective-c xcode string uiviewcontroller

如何将一个字符串变量从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中声明为字符串..请告诉我一个解决方案

5 个答案:

答案 0 :(得分:4)

尝试将您的value1分配为。

<强> firstviewcontroller.m

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

然后分配vc.value2 = value1;

答案 1 :(得分:1)

一般逻辑是:

  

注意: value1 value2 的数据类型必须相同。

首先放入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); 

并查看控制台

答案 2 :(得分:0)

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

您需要声明属性的变量并合成属性,以便将值赋给变量。

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

答案 3 :(得分:0)

合成了你的财产并将它与自己一起使用。 VALUE2。

希望这能解决您的问题。

一切顺利!!!

答案 4 :(得分: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.
}

并在Second .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