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